/**
*
*/
package net.conselldemallorca.helium.core.helper;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import net.conselldemallorca.helium.core.common.ExpedientIniciantDto;
import net.conselldemallorca.helium.core.extern.domini.FilaResultat;
import net.conselldemallorca.helium.core.extern.domini.ParellaCodiValor;
import net.conselldemallorca.helium.core.helper.TascaSegonPlaHelper.InfoSegonPla;
import net.conselldemallorca.helium.core.helperv26.MesuresTemporalsHelper;
import net.conselldemallorca.helium.core.model.hibernate.Alerta;
import net.conselldemallorca.helium.core.model.hibernate.Area;
import net.conselldemallorca.helium.core.model.hibernate.Camp;
import net.conselldemallorca.helium.core.model.hibernate.DefinicioProces;
import net.conselldemallorca.helium.core.model.hibernate.Document;
import net.conselldemallorca.helium.core.model.hibernate.Domini;
import net.conselldemallorca.helium.core.model.hibernate.Entorn;
import net.conselldemallorca.helium.core.model.hibernate.Enumeracio;
import net.conselldemallorca.helium.core.model.hibernate.Estat;
import net.conselldemallorca.helium.core.model.hibernate.Expedient;
import net.conselldemallorca.helium.core.model.hibernate.ExpedientTipus;
import net.conselldemallorca.helium.core.model.hibernate.Tasca;
import net.conselldemallorca.helium.core.model.hibernate.Termini;
import net.conselldemallorca.helium.core.model.hibernate.TerminiIniciat;
import net.conselldemallorca.helium.core.util.EntornActual;
import net.conselldemallorca.helium.core.util.GlobalProperties;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesAssumpte;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesExpedient;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesInteressat;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesNotificacio;
import net.conselldemallorca.helium.integracio.plugins.registre.DadesOficina;
import net.conselldemallorca.helium.integracio.plugins.registre.DocumentRegistre;
import net.conselldemallorca.helium.integracio.plugins.registre.RegistreNotificacio;
import net.conselldemallorca.helium.integracio.plugins.registre.RespostaAnotacioRegistre;
import net.conselldemallorca.helium.integracio.plugins.registre.RespostaJustificantDetallRecepcio;
import net.conselldemallorca.helium.integracio.plugins.registre.RespostaJustificantRecepcio;
import net.conselldemallorca.helium.jbpm3.integracio.JbpmHelper;
import net.conselldemallorca.helium.jbpm3.integracio.JbpmProcessInstance;
import net.conselldemallorca.helium.jbpm3.integracio.JbpmTask;
import net.conselldemallorca.helium.v3.core.api.dto.AreaDto;
import net.conselldemallorca.helium.v3.core.api.dto.ArxiuDto;
import net.conselldemallorca.helium.v3.core.api.dto.CampTascaDto;
import net.conselldemallorca.helium.v3.core.api.dto.CarrecDto;
import net.conselldemallorca.helium.v3.core.api.dto.DefinicioProcesDto;
import net.conselldemallorca.helium.v3.core.api.dto.DocumentDissenyDto;
import net.conselldemallorca.helium.v3.core.api.dto.DocumentDto;
import net.conselldemallorca.helium.v3.core.api.dto.DocumentTascaDto;
import net.conselldemallorca.helium.v3.core.api.dto.DominiRespostaColumnaDto;
import net.conselldemallorca.helium.v3.core.api.dto.DominiRespostaFilaDto;
import net.conselldemallorca.helium.v3.core.api.dto.EntornDto;
import net.conselldemallorca.helium.v3.core.api.dto.EnumeracioValorDto;
import net.conselldemallorca.helium.v3.core.api.dto.EstatDto;
import net.conselldemallorca.helium.v3.core.api.dto.ExpedientDadaDto;
import net.conselldemallorca.helium.v3.core.api.dto.ExpedientDto;
import net.conselldemallorca.helium.v3.core.api.dto.FestiuDto;
import net.conselldemallorca.helium.v3.core.api.dto.PersonaDto;
import net.conselldemallorca.helium.v3.core.api.dto.ReassignacioDto;
import net.conselldemallorca.helium.v3.core.api.dto.ReferenciaRDSJustificanteDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreAnnexDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreAnotacioDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreIdDto;
import net.conselldemallorca.helium.v3.core.api.dto.RegistreNotificacioDto;
import net.conselldemallorca.helium.v3.core.api.dto.RespostaJustificantDetallRecepcioDto;
import net.conselldemallorca.helium.v3.core.api.dto.RespostaJustificantRecepcioDto;
import net.conselldemallorca.helium.v3.core.api.dto.TascaDadaDto;
import net.conselldemallorca.helium.v3.core.api.dto.TerminiDto;
import net.conselldemallorca.helium.v3.core.api.dto.TerminiIniciatDto;
import net.conselldemallorca.helium.v3.core.api.dto.TramitDto;
import net.conselldemallorca.helium.v3.core.api.dto.ZonaperEventDto;
import net.conselldemallorca.helium.v3.core.api.dto.ZonaperExpedientDto;
import net.conselldemallorca.helium.v3.core.api.exception.NoTrobatException;
import net.conselldemallorca.helium.v3.core.api.exception.SistemaExternException;
import net.conselldemallorca.helium.v3.core.api.service.Jbpm3HeliumService;
import net.conselldemallorca.helium.v3.core.repository.AlertaRepository;
import net.conselldemallorca.helium.v3.core.repository.AreaRepository;
import net.conselldemallorca.helium.v3.core.repository.CampRepository;
import net.conselldemallorca.helium.v3.core.repository.CampTascaRepository;
import net.conselldemallorca.helium.v3.core.repository.CarrecRepository;
import net.conselldemallorca.helium.v3.core.repository.DefinicioProcesRepository;
import net.conselldemallorca.helium.v3.core.repository.DocumentRepository;
import net.conselldemallorca.helium.v3.core.repository.DocumentTascaRepository;
import net.conselldemallorca.helium.v3.core.repository.DominiRepository;
import net.conselldemallorca.helium.v3.core.repository.EntornRepository;
import net.conselldemallorca.helium.v3.core.repository.EnumeracioRepository;
import net.conselldemallorca.helium.v3.core.repository.EstatRepository;
import net.conselldemallorca.helium.v3.core.repository.ExpedientRepository;
import net.conselldemallorca.helium.v3.core.repository.ExpedientTipusRepository;
import net.conselldemallorca.helium.v3.core.repository.FestiuRepository;
import net.conselldemallorca.helium.v3.core.repository.ReassignacioRepository;
import net.conselldemallorca.helium.v3.core.repository.TascaRepository;
import net.conselldemallorca.helium.v3.core.repository.TerminiIniciatRepository;
import org.hibernate.Hibernate;
import org.jbpm.graph.exe.ProcessInstanceExpedient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.codahale.metrics.MetricRegistry;
/**
* Service que implementa la funcionalitat necessària per
* a integrar Helium i jBPM.
*
* @author Limit Tecnologies <limit@limit.es>
*/
@Component
public class Jbpm3HeliumHelper implements Jbpm3HeliumService {
@Resource
private EntornRepository entornRepository;
@Resource
private DominiRepository dominiRepository;
@Resource
private ExpedientTipusRepository expedientTipusRepository;
@Resource
private ExpedientRepository expedientRepository;
@Resource
private DefinicioProcesRepository definicioProcesRepository;
@Resource
private AreaRepository areaRepository;
@Resource
private CarrecRepository carrecRepository;
@Resource
private FestiuRepository festiuRepository;
@Resource
private ReassignacioRepository reassignacioRepository;
@Resource
private AlertaRepository alertaRepository;
@Resource
private TerminiIniciatRepository terminiIniciatRepository;
@Resource
private EstatRepository estatRepository;
@Resource
private DocumentRepository documentRepository;
@Resource
private EnumeracioRepository enumeracioRepository;
@Resource
private TascaRepository tascaRepository;
@Resource
private CampTascaRepository campTascaRepository;
@Resource
private CampRepository campRepository;
@Resource
private DocumentTascaRepository documentTascaRepository;
@Resource(name = "documentHelperV3")
private DocumentHelperV3 documentHelper;
@Resource
private ExpedientHelper expedientHelper;
@Resource
private DominiHelper dominiHelper;
@Resource
private JbpmHelper jbpmHelper;
@Resource
private VariableHelper variableHelper;
@Resource
private TascaHelper tascaHelper;
@Resource
private TerminiHelper terminiHelper;
@Resource
private PluginHelper pluginHelper;
@Resource
private MailHelper mailHelper;
@Resource
private NotificacioElectronicaHelper notificacioElectronicaHelper;
@Resource
private ConversioTipusHelper conversioTipusHelper;
@Resource
private MesuresTemporalsHelper mesuresTemporalsHelper;
@Resource
private IndexHelper serviceUtils;
@Resource
private MetricRegistry metricRegistry;
@Resource
private TascaSegonPlaHelper tascaSegonPlaHelper;
@Override
public String getUsuariCodiActual() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
return auth.getName();
}
@Override
public EntornDto getEntornActual() {
Long entornId = EntornActual.getEntornId();
logger.debug("Obtenint entorn actual (idEntornActual=" + entornId + ")");
if (entornId == null)
return null;
return conversioTipusHelper.convertir(
entornRepository.findOne(entornId),
EntornDto.class);
}
@Override
public ExpedientDto getExpedientIniciant() {
logger.debug("Obtenint expedient en fase d'inici");
return conversioTipusHelper.convertir(
ExpedientIniciantDto.getExpedient(),
ExpedientDto.class);
}
@Override
public ExpedientDto getExpedientAmbEntornITipusINumero(
Long entornId,
String expedientTipusCodi,
String numero) {
logger.debug("Obtenint expedient donat entorn, tipus i número (" +
"entornId=" + entornId + ", " +
"expedientTipusCodi=" + expedientTipusCodi + ", " +
"numero=" + numero + ")");
Entorn entorn = entornRepository.findOne(entornId);
if (entorn == null)
throw new NoTrobatException(Entorn.class, entornId);
ExpedientTipus expedientTipus = expedientTipusRepository.findByEntornAndCodi(
entorn,
expedientTipusCodi);
if (expedientTipus == null)
throw new NoTrobatException(ExpedientTipus.class, expedientTipusCodi);
return conversioTipusHelper.convertir(
expedientRepository.findByEntornAndTipusAndNumero(
entorn,
expedientTipus,
numero),
ExpedientDto.class);
}
@Override
public void luceneDeleteExpedient(String processInstanceId) {
logger.debug("Esborra expedient donada una instància de procés (" +
"processInstanceId=" + processInstanceId + ")");
serviceUtils.expedientIndexLuceneDelete(processInstanceId);
}
@Override
public ExpedientDto getExpedientArrelAmbProcessInstanceId(
String processInstanceId) {
logger.debug("Obtenint expedient donada una instància de procés (processInstanceId=" + processInstanceId + ")");
return conversioTipusHelper.convertir(
getExpedientDonatProcessInstanceId(processInstanceId),
ExpedientDto.class);
}
@Override
public EntornDto getEntornAmbProcessInstanceId(
String processInstanceId) {
logger.debug("Obtenint expedient donada una instància de procés (processInstanceId=" + processInstanceId + ")");
return conversioTipusHelper.convertir(
getEntornDonatProcessInstanceId(processInstanceId),
EntornDto.class);
}
@Override
public DefinicioProcesDto getDefinicioProcesAmbJbpmKeyIVersio(
String jbpmKey,
int version) {
logger.debug("Obtenint la definició de procés donat el codi jBPM i la versió (jbpmKey=" + jbpmKey + ", version=" + version +")");
return conversioTipusHelper.convertir(
definicioProcesRepository.findByJbpmKeyAndVersio(
jbpmKey,
version),
DefinicioProcesDto.class);
}
@Override
public DefinicioProcesDto getDarreraVersioAmbEntornIJbpmKey(
Long entornId,
String jbpmKey) {
logger.debug("Obtenint la darrera versió de la definició de procés donat l'entorn i el codi jBPM (entornId=" + entornId + ", jbpmKey=" + jbpmKey + ")");
return conversioTipusHelper.convertir(
definicioProcesRepository.findDarreraVersioAmbEntornIJbpmKey(
entornId,
jbpmKey),
DefinicioProcesDto.class);
}
@Override
public DefinicioProcesDto getDefinicioProcesPerProcessInstanceId(
String processInstanceId) {
logger.debug("Obtenint la definició de procés donada la instància de procés (processInstanceId=" + processInstanceId + ")");
return conversioTipusHelper.convertir(
getDefinicioProcesDonatProcessInstanceId(processInstanceId),
DefinicioProcesDto.class);
}
@Override
public PersonaDto getPersonaAmbCodi(String codi) {
logger.debug("Obtenint persona (codi=" + codi + ")");
return conversioTipusHelper.convertir(
pluginHelper.personaFindAmbCodi(codi),
PersonaDto.class);
}
@Override
public AreaDto getAreaAmbEntornICodi(
Long entornId,
String codi) {
logger.debug("Obtenint area donat l'entorn i el codi (" +
"entornId=" + entornId + ", " +
"codi=" + codi + ")");
Entorn entorn = entornRepository.findOne(entornId);
if (entorn == null)
throw new NoTrobatException(Entorn.class, entornId);
return conversioTipusHelper.convertir(
areaRepository.findByEntornAndCodi(
entorn,
codi),
AreaDto.class);
}
@Override
public CarrecDto getCarrecAmbEntornIAreaICodi(
Long entornId,
String areaCodi,
String carrecCodi) {
logger.debug("Obtenint carrec donat l'entorn, l'àrea i el codi (" +
"entornId=" + entornId + ", " +
"areaCodi=" + areaCodi + ", " +
"carrecCodi=" + carrecCodi + ")");
Entorn entorn = entornRepository.findOne(entornId);
if (entorn == null)
throw new NoTrobatException(Entorn.class, entornId);
Area area = areaRepository.findByEntornAndCodi(
entorn,
areaCodi);
if (area == null)
throw new NoTrobatException(Area.class, areaCodi);
return conversioTipusHelper.convertir(
carrecRepository.findByEntornAndAreaAndCodi(
entorn,
area,
carrecCodi),
CarrecDto.class);
}
@Override
public List<FestiuDto> findFestiusAll() {
logger.debug("Obtenint la llista de tots els festius");
return conversioTipusHelper.convertirList(
festiuRepository.findAll(),
FestiuDto.class);
}
@Override
public ReassignacioDto findReassignacioActivaPerUsuariOrigen(
String usuariCodi) {
logger.debug("Obtenint reassignació activa per a l'usuari ("
+ "usuariCodi=" + usuariCodi + ")");
Date ara = new Date();
return conversioTipusHelper.convertir(
reassignacioRepository.findByUsuari(
usuariCodi,
ara,
ara),
ReassignacioDto.class);
}
@Override
public void alertaCrear(
Long entornId,
Long expedientId,
Date data,
String usuariCodi,
String text) {
logger.debug("Creant alerta (" +
"entornId=" + entornId + ", " +
"expedientId=" + expedientId + ", " +
"data=" + data + ", " +
"usuariCodi=" + usuariCodi + ", " +
"text=" + text + ")");
Entorn entorn = entornRepository.findOne(entornId);
if (entorn == null)
throw new NoTrobatException(Entorn.class, entornId);
Expedient expedient = expedientRepository.findOne(expedientId);
if (expedient == null)
throw new NoTrobatException(Expedient.class, expedientId);
Alerta alerta = new Alerta();
alerta.setEntorn(entorn);
alerta.setExpedient(expedient);
alerta.setDataCreacio(data);
alerta.setDestinatari(usuariCodi);
alerta.setText(text);
alertaRepository.save(alerta);
}
@Override
public void alertaEsborrarAmbTaskInstanceId(long taskInstanceId) {
logger.debug("Esborrant alertes amb taskInstance (" +
"taskInstanceId=" + taskInstanceId + ")");
Date ara = new Date();
List<TerminiIniciat> terminis = terminiIniciatRepository.findByTaskInstanceId(
new Long(taskInstanceId).toString());
for (TerminiIniciat termini: terminis) {
for (Alerta alerta: termini.getAlertes()) {
alerta.setDataEliminacio(ara);
}
}
}
@Override
public void expedientModificarEstat(
String processInstanceId,
String estatCodi) {
logger.debug("Modificant estat de l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"estatCodi=" + estatCodi + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
Estat estat = estatRepository.findByExpedientTipusAndCodi(
expedient.getTipus(),
estatCodi);
if (estat == null)
throw new NoTrobatException(Estat.class, estatCodi);
expedientHelper.update(
expedient,
expedient.getNumero(),
expedient.getTitol(),
expedient.getResponsableCodi(),
expedient.getDataInici(),
expedient.getComentari(),
estat.getId(),
expedient.getGeoPosX(),
expedient.getGeoPosY(),
expedient.getGeoReferencia(),
expedient.getGrupCodi(),
false);
}
@Override
public void expedientModificarComentari(
String processInstanceId,
String comentari) {
logger.debug("Modificant comentari de l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"comentari=" + comentari + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
expedientHelper.update(
expedient,
expedient.getNumero(),
expedient.getTitol(),
expedient.getResponsableCodi(),
expedient.getDataInici(),
comentari,
(expedient.getEstat() != null) ? expedient.getEstat().getId() : null,
expedient.getGeoPosX(),
expedient.getGeoPosY(),
expedient.getGeoReferencia(),
expedient.getGrupCodi(),
false);
}
@Override
public void expedientModificarGeoref(
String processInstanceId,
Double posx,
Double posy,
String referencia) {
logger.debug("Modificant georeferència de l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"posx=" + posx + ", " +
"posy=" + posy + ", " +
"referencia=" + referencia + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
expedientHelper.update(
expedient,
expedient.getNumero(),
expedient.getTitol(),
expedient.getResponsableCodi(),
expedient.getDataInici(),
expedient.getComentari(),
(expedient.getEstat() != null) ? expedient.getEstat().getId() : null,
posx,
posy,
referencia,
expedient.getGrupCodi(),
false);
}
@Override
public void expedientModificarGrup(
String processInstanceId,
String grupCodi) {
logger.debug("Modificant grup de l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"grupCodi=" + grupCodi + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
expedientHelper.update(
expedient,
expedient.getNumero(),
expedient.getTitol(),
expedient.getResponsableCodi(),
expedient.getDataInici(),
expedient.getComentari(),
(expedient.getEstat() != null) ? expedient.getEstat().getId() : null,
expedient.getGeoPosX(),
expedient.getGeoPosY(),
expedient.getGeoReferencia(),
grupCodi,
false);
}
@Override
public void expedientModificarNumero(
String processInstanceId,
String numero) {
logger.debug("Modificant número de l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"numero=" + numero + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
expedientHelper.update(
expedient,
numero,
expedient.getTitol(),
expedient.getResponsableCodi(),
expedient.getDataInici(),
expedient.getComentari(),
(expedient.getEstat() != null) ? expedient.getEstat().getId() : null,
expedient.getGeoPosX(),
expedient.getGeoPosY(),
expedient.getGeoReferencia(),
expedient.getGrupCodi(),
false);
}
@Override
public void expedientModificarResponsable(
String processInstanceId,
String responsableCodi) {
logger.debug("Modificant responsable de l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"responsableCodi=" + responsableCodi + ")");
if (pluginHelper.personaFindAmbCodi(responsableCodi) == null)
throw new NoTrobatException(PersonaDto.class, responsableCodi);
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
expedientHelper.update(
expedient,
expedient.getNumero(),
expedient.getTitol(),
responsableCodi,
expedient.getDataInici(),
expedient.getComentari(),
(expedient.getEstat() != null) ? expedient.getEstat().getId() : null,
expedient.getGeoPosX(),
expedient.getGeoPosY(),
expedient.getGeoReferencia(),
expedient.getGrupCodi(),
false);
}
@Override
public void expedientModificarTitol(
String processInstanceId,
String titol) {
logger.debug("Modificant títol de l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"titol=" + titol + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
expedientHelper.update(
expedient,
expedient.getNumero(),
titol,
expedient.getResponsableCodi(),
expedient.getDataInici(),
expedient.getComentari(),
(expedient.getEstat() != null) ? expedient.getEstat().getId() : null,
expedient.getGeoPosX(),
expedient.getGeoPosY(),
expedient.getGeoReferencia(),
expedient.getGrupCodi(),
false);
}
@Override
public void expedientAturar(
String processInstanceId,
String motiu) {
logger.debug("Aturant expedient (processInstanceId=" + processInstanceId + ", motiu=" + motiu + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
expedientHelper.aturar(
expedient,
motiu,
null);
}
@Override
public void expedientReprendre(
String processInstanceId) {
logger.debug("Reprenent expedient (processInstanceId=" + processInstanceId + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
expedientHelper.reprendre(
expedient,
null);
}
@Override
public void expedientReindexar(
String processInstanceId) {
logger.debug("Reindexant expedient (processInstanceId=" + processInstanceId + ")");
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
serviceUtils.expedientIndexLuceneRecrear(expedient);
}
@Override
public void expedientBuidaLogs(
String processInstanceId) {
logger.debug("Buidant logs expedient (processInstanceId=" + processInstanceId + ")");
ProcessInstanceExpedient piexp = jbpmHelper.expedientFindByProcessInstanceId(processInstanceId);
if (piexp == null)
throw new NoTrobatException(ProcessInstanceExpedient.class, processInstanceId);
jbpmHelper.deleteProcessInstanceTreeLogs(piexp.getProcessInstanceId());
}
@Override
public ArxiuDto documentGenerarAmbPlantilla(
String taskInstanceId,
String processInstanceId,
String documentCodi,
Date dataDocument) {
logger.debug("Generant document amb plantilla (" +
"taskInstanceId=" + taskInstanceId + ", " +
"processInstanceId=" + processInstanceId + ", " +
"documentCodi=" + documentCodi + ", " +
"dataDocument=" + dataDocument + ")");
DefinicioProces definicioProces = getDefinicioProcesDonatProcessInstanceId(processInstanceId);
if (definicioProces == null)
throw new NoTrobatException(DefinicioProces.class, processInstanceId);
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
Document document = documentRepository.findByDefinicioProcesAndCodi(
definicioProces,
documentCodi);
if (document == null)
throw new NoTrobatException(Document.class, documentCodi);
ArxiuDto generat = documentHelper.generarDocumentAmbPlantillaIConvertir(
expedient,
document,
taskInstanceId,
processInstanceId,
dataDocument);
documentHelper.actualitzarDocument(
taskInstanceId,
processInstanceId,
document.getCodi(),
null,
dataDocument,
generat.getNom(),
generat.getContingut(),
false);
return generat;
}
@Override
public void createDadesTasca(Long taskId) {
tascaHelper.createDadesTasca(taskId);
}
@Override
public TerminiDto getTerminiAmbProcessInstanceICodi(
String processInstanceId,
String terminiCodi) {
logger.debug("Obtenint termini donada la instància de procés i el codi (" +
"processInstanceId=" + processInstanceId + "," +
"terminiCodi=" + terminiCodi + ")");
DefinicioProces definicioProces = getDefinicioProcesDonatProcessInstanceId(processInstanceId);
Termini termini = terminiHelper.findAmbDefinicioProcesICodi(
definicioProces,
terminiCodi);
if (termini == null)
throw new NoTrobatException(Termini.class, terminiCodi);
return conversioTipusHelper.convertir(
termini,
TerminiDto.class);
}
@Override
public TerminiIniciatDto getTerminiIniciatAmbProcessInstanceITerminiCodi(
String processInstanceId,
String terminiCodi) {
logger.debug("Obtenint termini iniciat donada la instància de procés i el codi (" +
"processInstanceId=" + processInstanceId + ", " +
"terminiCodi=" + terminiCodi + ")");
DefinicioProces definicioProces = getDefinicioProcesDonatProcessInstanceId(processInstanceId);
TerminiIniciat terminiIniciat = terminiHelper.findIniciatAmbDefinicioProcesICodi(
definicioProces,
processInstanceId,
terminiCodi);
if (terminiIniciat == null)
throw new NoTrobatException(TerminiIniciat.class, terminiCodi);
return conversioTipusHelper.convertir(
terminiIniciat,
TerminiIniciatDto.class);
}
@Override
public void configurarTerminiIniciatAmbDadesJbpm(
Long terminiIniciatId,
String taskInstanceId,
Long timerId) {
logger.debug("Configurant termini iniciat (" +
"terminiIniciatId=" + terminiIniciatId + ", " +
"taskInstanceId=" + taskInstanceId + ", " +
"timerId=" + timerId + ")");
TerminiIniciat terminiIniciat = terminiHelper.findTerminiIniciatById(terminiIniciatId);
if (terminiIniciat == null)
throw new NoTrobatException(TerminiIniciat.class, terminiIniciatId);
terminiIniciat.setTaskInstanceId(taskInstanceId);
if (timerId != null)
terminiIniciat.afegirTimerId(timerId.longValue());
}
@Override
public Date terminiCalcularDataInici(
Date fi,
int anys,
int mesos,
int dies,
boolean laborable) {
logger.debug("Calculant data d'inici de termini a partir d'una data de fi (" +
"fi=" + fi + ", " +
"anys=" + anys + ", " +
"mesos=" + mesos + ", " +
"dies=" + dies + ", " +
"laborable=" + laborable + ")");
return terminiHelper.getDataIniciTermini(fi, anys, mesos, dies, laborable);
}
@Override
public Date terminiCalcularDataFi(
Date inici,
int anys,
int mesos,
int dies,
boolean laborable) {
logger.debug("Calculant data de fi de termini a partir d'una data d'inici (" +
"inici=" + inici + ", " +
"anys=" + anys + ", " +
"mesos=" + mesos + ", " +
"dies=" + dies + ", " +
"laborable=" + laborable + ")");
return terminiHelper.getDataFiTermini(inici, anys, mesos, dies, laborable);
}
@Override
public void terminiIniciar(
String terminiCodi,
String processInstanceId,
Date data,
int anys,
int mesos,
int dies,
boolean esDataFi) {
logger.debug("Iniciant termini (" +
"terminiCodi=" + terminiCodi + ", " +
"processInstanceId=" + processInstanceId + ", " +
"data=" + data + ", " +
"anys=" + anys + ", " +
"mesos=" + mesos + ", " +
"dies=" + dies + ", " +
"esDataFi=" + esDataFi + ")");
DefinicioProces definicioProces = getDefinicioProcesDonatProcessInstanceId(processInstanceId);
Termini termini = terminiHelper.findAmbDefinicioProcesICodi(
definicioProces,
terminiCodi);
if (termini == null)
throw new NoTrobatException(Termini.class, terminiCodi);
terminiHelper.iniciar(
termini.getId(),
processInstanceId,
data,
anys,
mesos,
dies,
esDataFi);
}
@Override
public void terminiIniciar(
String terminiCodi,
String processInstanceId,
Date data,
boolean esDataFi) {
logger.debug("Iniciant termini (" +
"terminiCodi=" + terminiCodi + ", " +
"processInstanceId=" + processInstanceId + ", " +
"data=" + data + ", " +
"esDataFi=" + esDataFi + ")");
DefinicioProces definicioProces = getDefinicioProcesDonatProcessInstanceId(processInstanceId);
Termini termini = terminiHelper.findAmbDefinicioProcesICodi(
definicioProces,
terminiCodi);
if (termini == null)
throw new NoTrobatException(Termini.class, terminiCodi);
terminiHelper.iniciar(
termini.getId(),
processInstanceId,
data,
esDataFi);
}
@Override
public void terminiCancelar(
Long terminiIniciatId,
Date data) {
logger.debug("Cancelant termini iniciat (" +
"terminiIniciatId=" + terminiIniciatId + ", " +
"data=" + data + ")");
TerminiIniciat termini = terminiHelper.findTerminiIniciatById(terminiIniciatId);
if (termini == null)
throw new NoTrobatException(TerminiIniciat.class, terminiIniciatId);
terminiHelper.cancelar(terminiIniciatId, data);
}
@Override
public void terminiPausar(
Long terminiIniciatId,
Date data) {
logger.debug("Pausant termini iniciat (" +
"terminiIniciatId=" + terminiIniciatId + ", " +
"data=" + data + ")");
TerminiIniciat termini = terminiHelper.findTerminiIniciatById(terminiIniciatId);
if (termini == null)
throw new NoTrobatException(TerminiIniciat.class, terminiIniciatId);
terminiHelper.pausar(terminiIniciatId, data);
}
@Override
public void terminiContinuar(
Long terminiIniciatId,
Date data) {
logger.debug("Continuant termini iniciat (" +
"terminiIniciatId=" + terminiIniciatId + ", " +
"data=" + data + ")");
TerminiIniciat termini = terminiHelper.findTerminiIniciatById(terminiIniciatId);
if (termini == null)
throw new NoTrobatException(TerminiIniciat.class, terminiIniciatId);
terminiHelper.continuar(terminiIniciatId, data);
}
@Override
public List<DominiRespostaFilaDto> dominiConsultar(
String processInstanceId,
String dominiCodi,
String dominiId,
Map<String, Object> parametres) {
logger.debug("Executant una consulta de domini (" +
"processInstanceId=" + processInstanceId + ", " +
"dominiCodi=" + dominiCodi + ", " +
"dominiId=" + dominiId + ", " +
"parametres=" + parametres + ")");
Expedient expedient = getExpedientDonatProcessInstanceId(processInstanceId);
Domini domini = dominiRepository.findByEntornAndCodi(
expedient.getEntorn(),
dominiCodi);
if (domini == null)
throw new NoTrobatException(Domini.class, dominiCodi);
List<FilaResultat> files = dominiHelper.consultar(
domini,
dominiId,
parametres);
List<DominiRespostaFilaDto> resposta = new ArrayList<DominiRespostaFilaDto>();
if (files != null) {
for (FilaResultat fila: files) {
DominiRespostaFilaDto filaDto = new DominiRespostaFilaDto();
for (ParellaCodiValor columna: fila.getColumnes()) {
DominiRespostaColumnaDto columnaDto = new DominiRespostaColumnaDto();
columnaDto.setCodi(columna.getCodi());
columnaDto.setValor(columna.getValor());
filaDto.getColumnes().add(columnaDto);
}
resposta.add(filaDto);
}
}
return resposta;
}
@Override
public List<DominiRespostaFilaDto> dominiInternConsultar(
String processInstanceId,
String dominiId,
Map<String, Object> parametres) throws Exception {
logger.debug("Executant una consulta de domini (" +
"processInstanceId=" + processInstanceId + ", " +
"dominiId=" + dominiId + ", " +
"parametres=" + parametres + ")");
Expedient expedient = getExpedientDonatProcessInstanceId(processInstanceId);
List<ParellaCodiValor> paramsConsulta = new ArrayList<ParellaCodiValor>();
paramsConsulta.add(
new ParellaCodiValor(
"entorn",
expedient.getEntorn().getCodi()));
if (parametres != null) {
for (String codi: parametres.keySet()) {
paramsConsulta.add(new ParellaCodiValor(
codi,
parametres.get(codi)));
}
}
List<FilaResultat> files = dominiHelper.consultaDominiIntern(
dominiId,
paramsConsulta);
List<DominiRespostaFilaDto> resposta = new ArrayList<DominiRespostaFilaDto>();
if (files != null) {
for (FilaResultat fila: files) {
DominiRespostaFilaDto filaDto = new DominiRespostaFilaDto();
for (ParellaCodiValor columna: fila.getColumnes()) {
DominiRespostaColumnaDto columnaDto = new DominiRespostaColumnaDto();
columnaDto.setCodi(columna.getCodi());
columnaDto.setValor(columna.getValor());
filaDto.getColumnes().add(columnaDto);
}
resposta.add(filaDto);
}
}
return resposta;
}
@Override
public List<EnumeracioValorDto> enumeracioConsultar(
String processInstanceId,
String enumeracioCodi) {
logger.debug("Consultant els valors d'una enumeració (" +
"processInstanceId=" + processInstanceId + ", " +
"enumeracioCodi=" + enumeracioCodi + ")");
Expedient expedient = getExpedientDonatProcessInstanceId(processInstanceId);
Enumeracio enumeracio = enumeracioRepository.findByEntornAndCodiAndExpedientTipusNull(
expedient.getEntorn(),
enumeracioCodi);
if (enumeracio == null) {
enumeracio = enumeracioRepository.findByEntornAndExpedientTipusAndCodi(
expedient.getEntorn(),
expedient.getTipus(),
enumeracioCodi);
}
if (enumeracio == null)
throw new NoTrobatException(Enumeracio.class, enumeracioCodi);
return conversioTipusHelper.convertirList(
enumeracio.getEnumeracioValors(),
EnumeracioValorDto.class);
}
@Override
public List<CampTascaDto> findCampsPerTaskInstance(
long taskInstanceId) {
logger.debug("Consultant els camps del formulari de la tasca (" +
"taskInstanceId=" + taskInstanceId + ")");
JbpmTask task = jbpmHelper.getTaskById(new Long(taskInstanceId).toString());
if (task == null)
throw new NoTrobatException(JbpmTask.class, taskInstanceId);
DefinicioProces definicioProces = definicioProcesRepository.findByJbpmId(
task.getProcessDefinitionId());
if (definicioProces == null)
throw new NoTrobatException(DefinicioProces.class, task.getProcessDefinitionId());
Tasca tasca = tascaRepository.findByJbpmNameAndDefinicioProces(
task.getTaskName(),
definicioProces);
if (tasca == null)
throw new NoTrobatException(Tasca.class, task.getTaskName());
return conversioTipusHelper.convertirList(
campTascaRepository.findAmbTascaOrdenats(tasca.getId()),
CampTascaDto.class);
}
@Override
public List<DocumentTascaDto> findDocumentsPerTaskInstance(
long taskInstanceId) {
logger.debug("Consultant els documents de la tasca (taskInstanceId=" + taskInstanceId + ")");
JbpmTask task = jbpmHelper.getTaskById(new Long(taskInstanceId).toString());
if (task == null)
throw new NoTrobatException(JbpmTask.class, taskInstanceId);
DefinicioProces definicioProces = definicioProcesRepository.findByJbpmId(
task.getProcessDefinitionId());
if (definicioProces == null)
throw new NoTrobatException(DefinicioProces.class, task.getProcessDefinitionId());
Tasca tasca = tascaRepository.findByJbpmNameAndDefinicioProces(
task.getTaskName(),
definicioProces);
if (tasca == null)
throw new NoTrobatException(Tasca.class, task.getTaskName());
return conversioTipusHelper.convertirList(
documentTascaRepository.findAmbTascaOrdenats(tasca.getId()),
DocumentTascaDto.class);
}
@Override
public String getCodiVariablePerDocumentCodi(String documentCodi) {
logger.debug("Obtenint el codi de variable jBPM pel document (" +
"documentCodi=" + documentCodi + ")");
return documentHelper.getVarPerDocumentCodi(documentCodi, false);
}
@Override
public DocumentDto getDocumentInfo(Long documentStoreId) {
logger.debug("Obtenint informació del document (" +
"documentStoreId=" + documentStoreId + ")");
return conversioTipusHelper.convertir(
documentHelper.getDocumentOriginal(
documentStoreId,
false),
DocumentDto.class);
}
@Override
public ArxiuDto getArxiuPerMostrar(Long documentStoreId) {
logger.debug("Obtenint arxiu del document (" +
"documentStoreId=" + documentStoreId + ")");
DocumentDto document = documentHelper.getDocumentOriginal(
documentStoreId,
false);
if (document == null)
return null;
return documentHelper.getArxiuPerDocumentStoreId(
documentStoreId,
false,
true);
}
@Override
public Long documentExpedientGuardar(
String processInstanceId,
String documentCodi,
Date data,
String arxiuNom,
byte[] arxiuContingut) {
logger.debug("Guardant un document a dins l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"documentCodi=" + documentCodi + ", " +
"data=" + data + ", " +
"arxiuNom=" + arxiuNom + ", " +
"arxiuContingut=" + arxiuContingut + ")");
return documentHelper.actualitzarDocument(
null,
processInstanceId,
documentCodi,
null,
data,
arxiuNom,
arxiuContingut,
false);
}
@Override
public void desfinalitzarExpedient(String processInstanceId) throws Exception{
logger.debug("reprendreExpedient (" +
"processInstanceId=" + processInstanceId + ")");
jbpmHelper.desfinalitzarExpedient(processInstanceId);
}
@Override
public boolean tokenActivar(long tokenId, boolean activar) {
logger.debug("tokenActivar (" +
"tokenId=" + tokenId + ", " +
"activar=" + activar + ")");
try {
return jbpmHelper.tokenActivar(tokenId, activar);
} catch (Exception ex) {
return false;
}
}
@Override
public Long documentExpedientAdjuntar(
String processInstanceId,
String adjuntId,
String adjuntTitol,
Date adjuntData,
String arxiuNom,
byte[] arxiuContingut) {
logger.debug("Guardant un document adjunt a dins l'expedient (" +
"processInstanceId=" + processInstanceId + ", " +
"adjuntId=" + adjuntId + ", " +
"adjuntTitol=" + adjuntTitol + ", " +
"adjuntData=" + adjuntData + ", " +
"arxiuNom=" + arxiuNom + ", " +
"arxiuContingut=" + arxiuContingut + ")");
return documentHelper.actualitzarDocument(
null,
processInstanceId,
null,
adjuntTitol,
adjuntData,
arxiuNom,
arxiuContingut,
true);
}
@Override
public void documentExpedientEsborrar(
String taskInstanceId,
String processInstanceId,
String documentCodi) {
logger.debug("Esborrant un document de dins l'expedient (" +
"taskInstanceId=" + taskInstanceId + ", " +
"processInstanceId=" + processInstanceId + ", " +
"documentCodi=" + documentCodi + ")");
documentHelper.esborrarDocument(
taskInstanceId,
processInstanceId,
documentCodi);
}
@Override
public void documentExpedientGuardarDadesRegistre(
Long documentStoreId,
String registreNumero,
Date registreData,
String registreOficinaCodi,
String registreOficinaNom,
boolean registreEntrada) {
logger.debug("Esborrant un document de dins l'expedient (" +
"documentStoreId=" + documentStoreId + ", " +
"registreNumero=" + registreNumero + ", " +
"registreData=" + registreData + ", " +
"registreOficinaCodi=" + registreOficinaCodi + ", " +
"registreOficinaNom=" + registreOficinaNom + ", " +
"registreEntrada=" + registreEntrada + ")");
documentHelper.guardarDadesRegistre(
documentStoreId,
registreNumero,
registreData,
registreOficinaCodi,
registreOficinaNom,
registreEntrada);
}
@Override
public void emailSend(
String fromAddress,
List<String> recipients,
List<String> ccRecipients,
List<String> bccRecipients,
String subject,
String text,
List<ArxiuDto> attachments) {
logger.debug("Enviant correu (" +
"fromAddress=" + fromAddress + ", " +
"recipients=" + recipients + ", " +
"ccRecipients=" + ccRecipients + ", " +
"bccRecipients=" + bccRecipients + ", " +
"subject=" + subject + ", " +
"text=" + text + ")");
try {
mailHelper.send(
fromAddress,
recipients,
ccRecipients,
bccRecipients,
subject,
text,
conversioTipusHelper.convertirList(
attachments,
ArxiuDto.class));
} catch (Exception e) {
throw SistemaExternException.tractarSistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(Enviament de mail '" + subject + "')",
e);
}
}
@Override
public boolean isRegistreActiu() {
logger.debug("Comprovant si el plugin de registre està actiu");
return pluginHelper.registreIsPluginActiu();
}
@Override
public RegistreIdDto registreAnotacioEntrada(
RegistreAnotacioDto anotacio,
Long expedientId) {
Expedient expedient = expedientRepository.findOne(expedientId);
if (expedient == null)
throw new NoTrobatException(Expedient.class, expedientId);
RegistreIdDto respostaPlugin = pluginHelper.registreAnotacioEntrada(
anotacio,
expedient);
RegistreIdDto resposta = new RegistreIdDto();
resposta.setNumero(respostaPlugin.getNumero());
resposta.setData(respostaPlugin.getData());
return resposta;
}
@Override
public RegistreIdDto registreAnotacioSortida(
RegistreAnotacioDto anotacio,
Long expedientId) {
/*RegistreSortida registreSortida = new RegistreSortida();
DadesOficina dadesOficina = new DadesOficina();
dadesOficina.setOrganCodi(anotacio.getOrganCodi());
dadesOficina.setOficinaCodi(anotacio.getOficinaCodi());
registreSortida.setDadesOficina(dadesOficina);
DadesInteressat dadesInteressat = new DadesInteressat();
dadesInteressat.setAutenticat(true);
dadesInteressat.setEntitatCodi(anotacio.getEntitatCodi());
dadesInteressat.setNomAmbCognoms(anotacio.getInteressatNomAmbCognoms());
dadesInteressat.setMunicipiCodi(anotacio.getInteressatMunicipiCodi());
dadesInteressat.setMunicipiNom(anotacio.getInteressatMunicipiNom());
registreSortida.setDadesInteressat(dadesInteressat);
DadesAssumpte dadesAssumpte = new DadesAssumpte();
String idiomaExtracte = anotacio.getAssumpteIdiomaCodi();
dadesAssumpte.setAssumpte(anotacio.getAssumpteExtracte());
dadesAssumpte.setIdiomaCodi(
(idiomaExtracte != null) ? idiomaExtracte : "ca");
dadesAssumpte.setTipus(
anotacio.getAssumpteTipus());
dadesAssumpte.setRegistreNumero(
anotacio.getAssumpteRegistreNumero());
dadesAssumpte.setRegistreAny(
anotacio.getAssumpteRegistreAny());
registreSortida.setDadesAssumpte(dadesAssumpte);
if (anotacio.getAnnexos() != null) {
List<DocumentRegistre> documents = new ArrayList<DocumentRegistre>();
for (RegistreAnnexDto annex: anotacio.getAnnexos()) {
DocumentRegistre document = new DocumentRegistre();
document.setNom(annex.getNom());
document.setIdiomaCodi((annex.getIdiomaCodi() != null) ? annex.getIdiomaCodi() : "ca");
document.setData(annex.getData());
document.setArxiuNom(annex.getArxiuNom());
document.setArxiuContingut(annex.getArxiuContingut());
documents.add(document);
}
registreSortida.setDocuments(documents);
}*/
Expedient expedient = expedientRepository.findOne(expedientId);
if (expedient == null)
throw new NoTrobatException(Expedient.class, expedientId);
RegistreIdDto respostaPlugin = pluginHelper.registreAnotacioSortida(
anotacio,
expedient);
RegistreIdDto resposta = new RegistreIdDto();
resposta.setNumero(respostaPlugin.getNumero());
resposta.setData(respostaPlugin.getData());
return resposta;
}
@Override
public Date registreNotificacioComprovarRecepcio(
String registreNumero,
Long expedientId) {
Expedient expedient = null;
if (expedientId != null) {
expedient = expedientRepository.findOne(expedientId);
if (expedient == null)
throw new NoTrobatException(Expedient.class, expedientId);
}
return pluginHelper.registreDataJustificantRecepcio(registreNumero, expedient);
}
@Override
public String registreObtenirOficinaNom(
String oficinaCodi,
Long expedientId) {
Expedient expedient = expedientRepository.findOne(expedientId);
if (expedient == null)
throw new NoTrobatException(Expedient.class, expedientId);
return pluginHelper.registreOficinaNom(oficinaCodi, expedient);
}
@Override
public RegistreIdDto notificacioCrear(
RegistreNotificacioDto notificacio,
Long expedientId) {
Expedient expedient = expedientRepository.findOne(expedientId);
if (expedient == null)
throw new NoTrobatException(Expedient.class, expedientId);
RegistreNotificacio registreNotificacio = new RegistreNotificacio();
DadesOficina dadesOficina = new DadesOficina();
dadesOficina.setOrganCodi(notificacio.getOrganCodi());
dadesOficina.setOficinaCodi(notificacio.getOficinaCodi());
registreNotificacio.setDadesOficina(dadesOficina);
DadesInteressat dadesInteressat = new DadesInteressat();
dadesInteressat.setAutenticat(true);
dadesInteressat.setEntitatCodi(notificacio.getEntitatCodi());
dadesInteressat.setNomAmbCognoms(notificacio.getInteressatNomAmbCognoms());
dadesInteressat.setMunicipiCodi(notificacio.getInteressatMunicipiCodi());
dadesInteressat.setMunicipiNom(notificacio.getInteressatMunicipiNom());
dadesInteressat.setNif(notificacio.getInteressatNif());
registreNotificacio.setDadesInteressat(dadesInteressat);
DadesExpedient dadesExpedient = new DadesExpedient();
dadesExpedient.setIdentificador(notificacio.getExpedientIdentificador());
dadesExpedient.setClau(notificacio.getExpedientClau());
dadesExpedient.setUnitatAdministrativa(notificacio.getExpedientUnitatAdministrativa());
registreNotificacio.setDadesExpedient(dadesExpedient);
DadesAssumpte dadesAssumpte = new DadesAssumpte();
String idiomaExtracte = notificacio.getAssumpteIdiomaCodi();
dadesAssumpte.setAssumpte(notificacio.getAssumpteExtracte());
dadesAssumpte.setIdiomaCodi(
(idiomaExtracte != null) ? idiomaExtracte : "ca");
dadesAssumpte.setTipus(
notificacio.getAssumpteTipus());
dadesAssumpte.setRegistreNumero(
notificacio.getAssumpteRegistreNumero());
dadesAssumpte.setRegistreAny(
notificacio.getAssumpteRegistreAny());
DadesNotificacio dadesNotificacio = new DadesNotificacio();
dadesNotificacio.setJustificantRecepcio(notificacio.isNotificacioJustificantRecepcio());
dadesNotificacio.setAvisTitol(notificacio.getNotificacioAvisTitol());
dadesNotificacio.setAvisText(notificacio.getNotificacioAvisText());
dadesNotificacio.setAvisTextSms(notificacio.getNotificacioAvisTextSms());
dadesNotificacio.setOficiTitol(notificacio.getNotificacioOficiTitol());
dadesNotificacio.setOficiText(notificacio.getNotificacioOficiText());
dadesNotificacio.setIdiomaCodi(notificacio.getAssumpteIdiomaCodi());
dadesNotificacio.setTipus(notificacio.getAssumpteTipus());
dadesNotificacio.setAssumpte(notificacio.getAssumpteExtracte());
dadesNotificacio.setUnitatAdministrativa(notificacio.getUnitatAdministrativa());
dadesNotificacio.setRegistreNumero(notificacio.getAssumpteRegistreNumero());
dadesNotificacio.setRegistreAny(notificacio.getAssumpteRegistreAny());
registreNotificacio.setDadesNotificacio(dadesNotificacio);
if (notificacio.getAnnexos() != null) {
List<DocumentRegistre> documents = new ArrayList<DocumentRegistre>();
for (RegistreAnnexDto annex: notificacio.getAnnexos()) {
DocumentRegistre document = new DocumentRegistre();
document.setNom(annex.getNom());
document.setIdiomaCodi((annex.getIdiomaCodi() != null) ? annex.getIdiomaCodi() : "ca");
document.setData(annex.getData());
document.setArxiuNom(annex.getArxiuNom());
document.setArxiuContingut(annex.getArxiuContingut());
documents.add(document);
}
registreNotificacio.setDocuments(documents);
}
RespostaAnotacioRegistre respostaPlugin = pluginHelper.tramitacioRegistrarNotificacio(
registreNotificacio,
expedient);
if (respostaPlugin.isOk()) {
RegistreIdDto resposta = new RegistreIdDto();
resposta.setNumero(respostaPlugin.getNumero());
resposta.setData(respostaPlugin.getData());
ReferenciaRDSJustificanteDto referenciaRDSJustificante = new ReferenciaRDSJustificanteDto();
referenciaRDSJustificante.setClave(respostaPlugin.getReferenciaRDSJustificante().getClave());
referenciaRDSJustificante.setCodigo(respostaPlugin.getReferenciaRDSJustificante().getCodigo());
resposta.setReferenciaRDSJustificante(referenciaRDSJustificante);
return resposta;
} else {
throw new SistemaExternException(
expedient.getEntorn().getId(),
expedient.getEntorn().getCodi(),
expedient.getEntorn().getNom(),
expedient.getId(),
expedient.getTitol(),
expedient.getNumero(),
expedient.getTipus().getId(),
expedient.getTipus().getCodi(),
expedient.getTipus().getNom(),
"(Registre data de justificant)",
"[" + respostaPlugin.getErrorCodi() + "]: " + respostaPlugin.getErrorDescripcio());
}
}
@Override
public RespostaJustificantRecepcioDto notificacioElectronicaJustificant(
String registreNumero) {
RespostaJustificantRecepcio resposta = pluginHelper.tramitacioObtenirJustificant(
registreNumero);
if (!resposta.isError()) {
return conversioTipusHelper.convertir(resposta, RespostaJustificantRecepcioDto.class);
} else {
throw new SistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(Justificació de recepció)",
"[" + resposta.getErrorCodi() + "]: " + resposta.getErrorDescripcio());
}
}
@Override
public RespostaJustificantDetallRecepcioDto notificacioElectronicaJustificantDetall(
String registreNumero) {
RespostaJustificantDetallRecepcio resposta = pluginHelper.tramitacioObtenirJustificantDetall(
registreNumero);
if (!resposta.isError()) {
return conversioTipusHelper.convertir(resposta, RespostaJustificantDetallRecepcioDto.class);
} else {
throw new SistemaExternException(
null,
null,
null,
null,
null,
null,
null,
null,
null,
"(Justificació de recepció detallada)",
"[" + resposta.getErrorCodi() + "]: " + resposta.getErrorDescripcio());
}
}
@Override
public void notificacioGuardar(
Long expedientId,
String numero,
Date data,
String RDSClave,
Long RDSCodigo) {
logger.debug("Guardant una notificació de l'expedient (" +
"expedientId=" + expedientId + ", " +
"numero=" + numero + ", " +
"data=" + data + ", " +
"RDSClave=" + RDSClave + ", " +
"RDSCodigo=" + RDSCodigo + ")");
notificacioElectronicaHelper.create(
expedientId,
numero,
data,
RDSClave,
RDSCodigo);
}
@Override
public boolean notificacioEsborrar(
String numero,
String clave,
Long codigo) {
logger.debug("Esborrar una notificació de l'expedient (" +
"numero=" + numero + ", " +
"RDSClave=" + clave + ", " +
"RDSCodigo=" + codigo + ")");
return notificacioElectronicaHelper.delete(
numero,
clave,
codigo);
}
@Override
public void portasignaturesEnviar(
Long documentId,
List<Long> annexosId,
PersonaDto persona,
List<PersonaDto> personesPas1,
int minSignatarisPas1,
List<PersonaDto> personesPas2,
int minSignatarisPas2,
List<PersonaDto> personesPas3,
int minSignatarisPas3,
Long expedientId,
String importancia,
Date dataLimit,
Long tokenId,
Long processInstanceId,
String transicioOK,
String transicioKO) {
DocumentDto document = documentHelper.getDocumentVista(
documentId,
true,
true);
List<DocumentDto> annexos = null;
if (annexosId != null) {
annexos = new ArrayList<DocumentDto>();
for (Long docId: annexosId) {
DocumentDto docDto = documentHelper.getDocumentVista(
docId,
false,
false);
if (docDto != null){
annexos.add(docDto);
}
}
}
pluginHelper.portasignaturesEnviar(
document,
annexos,
persona,
personesPas1,
minSignatarisPas1,
personesPas2,
minSignatarisPas2,
personesPas3,
minSignatarisPas3,
expedientRepository.findOne(expedientId),
importancia,
dataLimit,
tokenId,
processInstanceId,
transicioOK,
transicioKO);
}
@Override
public void portasignaturesEliminar(
List<Integer> documentIds) {
pluginHelper.portasignaturesCancelar(documentIds);
}
@Override
public void zonaperExpedientCrear(
ExpedientDto expedient,
ZonaperExpedientDto dadesExpedient) {
String identificador = expedient.getNumeroIdentificador();
String clau = new Long(System.currentTimeMillis()).toString();
dadesExpedient.setExpedientIdentificador(identificador);
dadesExpedient.setExpedientClau(clau);
pluginHelper.tramitacioZonaperExpedientCrear(expedient, dadesExpedient);
Expedient ex = expedientRepository.findOne(expedient.getId());
ex.setTramitExpedientIdentificador(identificador);
ex.setTramitExpedientClau(clau);
}
@Override
public void zonaperEventCrear(
String processInstanceId,
ZonaperEventDto dadesEvent) {
Expedient expedient = getExpedientDonatProcessInstanceId(processInstanceId);
pluginHelper.tramitacioZonaperEventCrear(expedient, dadesEvent);
}
@Override
public TramitDto getTramit(String numero, String clau) {
logger.debug("Obtenint dades del tràmit (numero=" + numero + ", clau=" + clau + ")");
return conversioTipusHelper.convertir(
pluginHelper.tramitacioObtenirDadesTramit(numero, clau),
TramitDto.class);
}
@Override
public ArxiuDto getArxiuGestorDocumental(String id) {
logger.debug("Obtenint arxiu de la gestió documental (id=" + id + ")");
ArxiuDto arxiu = new ArxiuDto();
arxiu.setContingut(
pluginHelper.gestioDocumentalObtenirDocument(id));
return arxiu;
}
@Override
public EstatDto findEstatAmbEntornIExpedientTipusICodi(
Long entornId,
String expedientTipusCodi,
String estatCodi) {
logger.debug("Obtenint l'estat donat l'entorn, el tipus d'expedient i el codi (" +
"entornId=" + entornId + ", " +
"expedientTipusCodi=" + expedientTipusCodi + ", " +
"estatCodi=" + estatCodi + ")");
Entorn entorn = entornRepository.findOne(entornId);
if (entorn == null)
throw new NoTrobatException(Entorn.class, entornId);
ExpedientTipus expedientTipus = expedientTipusRepository.findByEntornAndCodi(
entorn,
expedientTipusCodi);
if (expedientTipus == null)
throw new NoTrobatException(ExpedientTipus.class, expedientTipusCodi);
return conversioTipusHelper.convertir(
estatRepository.findByExpedientTipusAndCodi(
expedientTipus,
estatCodi),
EstatDto.class);
}
@Override
public DocumentDissenyDto getDocumentDisseny(
Long definicioProcesId,
String documentCodi) {
logger.debug("Obtenint el document de disseny donada la definició de procés i el codi (" +
"definicioProcesId=" + definicioProcesId + ", " +
"documentCodi=" + documentCodi + ")");
DefinicioProces definicioProces = definicioProcesRepository.findOne(definicioProcesId);
if (definicioProces == null)
throw new NoTrobatException(DefinicioProces.class, definicioProcesId);
return conversioTipusHelper.convertir(
documentRepository.findByDefinicioProcesAndCodi(
definicioProces,
documentCodi),
DocumentDissenyDto.class);
}
@Override
public void expedientRelacionar(
Long expedientIdOrigen,
Long expedientIdDesti) {
logger.debug("Relacionant els expedients (" +
"expedientIdOrigen=" + expedientIdOrigen + ", " +
"expedientIdDesti=" + expedientIdDesti + ")");
Expedient origen = expedientRepository.findOne(expedientIdOrigen);
if (origen == null)
throw new NoTrobatException(Expedient.class, expedientIdOrigen);
Expedient desti = expedientRepository.findOne(expedientIdDesti);
if (desti == null)
throw new NoTrobatException(Expedient.class, expedientIdDesti);
expedientHelper.relacioCrear(
origen,
desti);
}
@Override
public void tokenRedirigir(
long tokenId,
String nodeName,
boolean cancelarTasques) {
logger.debug("Redirigint el token (" +
"tokenId=" + tokenId + ", " +
"nodeName=" + nodeName + ", " +
"cancelarTasques=" + cancelarTasques + ")");
expedientHelper.tokenRetrocedir(
new Long(tokenId).toString(),
nodeName,
cancelarTasques);
}
@Override
public ExpedientDadaDto getDadaPerProcessInstance(
String processInstanceId,
String varCodi) {
logger.debug("Obtenint la dada de l'instància de procés (processInstanceId=" + processInstanceId + ")");
DefinicioProces definicioProces = getDefinicioProcesDonatProcessInstanceId(
processInstanceId);
if (definicioProces == null)
throw new NoTrobatException(DefinicioProces.class, processInstanceId);
Camp camp = campRepository.findByDefinicioProcesAndCodi(
definicioProces,
varCodi);
if (camp == null)
throw new NoTrobatException(Camp.class, varCodi);
ExpedientDadaDto resposta = new ExpedientDadaDto();
Object valor = jbpmHelper.getProcessInstanceVariable(
processInstanceId,
varCodi);
resposta.setText(
variableHelper.getTextPerCamp(
camp,
valor,
null,
processInstanceId));
return resposta;
}
@Override
public TascaDadaDto getDadaPerTaskInstance(
String processInstanceId,
String taskInstanceId,
String varCodi) {
logger.debug("Obtenint la dada de l'instància de tasca (taskInstanceId=" + taskInstanceId + ")");
DefinicioProces definicioProces = getDefinicioProcesDonatProcessInstanceId(
processInstanceId);
if (definicioProces == null)
throw new NoTrobatException(DefinicioProces.class);
Camp camp = campRepository.findByDefinicioProcesAndCodi(
definicioProces,
varCodi);
if (camp == null)
throw new NoTrobatException(Camp.class,varCodi);
TascaDadaDto resposta = new TascaDadaDto();
Object valor = jbpmHelper.getTaskInstanceVariable(
taskInstanceId,
varCodi);
resposta.setText(
variableHelper.getTextPerCamp(
camp,
valor,
taskInstanceId,
null));
return resposta;
}
@Override
public ExpedientDto findExpedientAmbMateixTipusINumero(
Long entornId,
Long expedientTipusId,
String numero) {
logger.debug("findExpedientsAmbMateixTipusINumero (" +
"entornId=" + entornId + ", " +
"numero=" + numero + ", " +
"expedientTipusId=" + expedientTipusId + ")");
Entorn entorn = entornRepository.findOne(entornId);
if (entorn == null)
throw new NoTrobatException(Entorn.class, entornId);
ExpedientTipus expedientTipus = expedientTipusRepository.findOne(expedientTipusId);
if (expedientTipus == null)
throw new NoTrobatException(ExpedientTipus.class, expedientTipusId);
Expedient expedient = expedientRepository.findByEntornAndTipusAndNumero(
entorn,
expedientTipus,
numero);
if (expedient == null)
return null;
return conversioTipusHelper.convertir(expedient, ExpedientDto.class);
}
@Override
public List<ExpedientDto> findExpedientsConsultaGeneral(
Long entornId,
String titol,
String numero,
Date dataInici1,
Date dataInici2,
Long expedientTipusId,
Long estatId,
boolean nomesIniciats,
boolean nomesFinalitzats) {
logger.debug("Consultant expedients (" +
"entornId=" + entornId + ", " +
"titol=" + titol + ", " +
"numero=" + numero + ", " +
"dataInici1=" + dataInici1 + ", " +
"dataInici2=" + dataInici2 + ", " +
"expedientTipusId=" + expedientTipusId + ", " +
"estatId=" + estatId + ", " +
"nomesFinalitzats=" + nomesFinalitzats + ", " +
"nomesFinalitzats=" + nomesFinalitzats + ")");
Entorn entorn = entornRepository.findOne(entornId);
if (entorn == null)
throw new NoTrobatException(Entorn.class, entornId);
ExpedientTipus expedientTipus = null;
Estat estat = null;
if (expedientTipusId != null) {
expedientTipus = expedientTipusRepository.findOne(expedientTipusId);
if (expedientTipus == null)
throw new NoTrobatException(ExpedientTipus.class, expedientTipusId);
if (estatId != null) {
estat = estatRepository.findOne(estatId);
if (estat == null)
throw new NoTrobatException(Estat.class, estatId);
}
}
return conversioTipusHelper.convertirList(
expedientHelper.findByFiltreGeneral(
entorn,
titol,
numero,
dataInici1,
dataInici2,
expedientTipus,
estat,
nomesIniciats,
nomesFinalitzats),
ExpedientDto.class);
}
@Override
@Transactional
public void initializeDefinicionsProces() {
List<ExpedientTipus> llistat = expedientTipusRepository.findAll();
for (ExpedientTipus expedientTipus: llistat) {
Hibernate.initialize(expedientTipus.getDefinicionsProces());
}
}
@Override
public boolean mesuraIsActiu() {
return MesuresTemporalsHelper.isActiu();
}
@Override
public void mesuraIniciar(String clau, String familia, String tipusExpedient, String tasca, String detall) {
mesuresTemporalsHelper.mesuraIniciar(clau, familia, tipusExpedient, tasca, detall);
}
@Override
public void mesuraCalcular(String clau, String familia, String tipusExpedient, String tasca, String detall) {
mesuresTemporalsHelper.mesuraCalcular(clau, familia, tipusExpedient, tasca, detall);
}
@Override
// @Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateExpedientError(
Long jobId,
Long expedientId,
String errorDesc,
String errorFull) {
logger.error("JOB (" + jobId + "): Actualitzant error de l'expedient");
// if (jobId != null)
// jbpmHelper.retryJob(jobId);
Expedient expedient = expedientRepository.findOne(expedientId);
expedient.setErrorDesc(errorDesc);
expedient.setErrorFull(errorFull);
expedientRepository.save(expedient);
}
@Override
public String getHeliumProperty(String propertyName) {
return GlobalProperties.getInstance().getProperty(propertyName);
}
@Override
public MetricRegistry getMetricRegistry() {
return metricRegistry;
}
@Override
public List<String> getRolsByCodi(String codi) {
List<String> rols = new ArrayList<String>();
try {
if (pluginHelper.personaIsPluginActiu())
rols = pluginHelper.personaFindRolsAmbCodi(codi);
} catch (Exception ex) {
// En cas que hi hagi una excepció,retornarem la llista buida
}
return rols;
}
@Override
public void setErrorTascaSegonPla(Long taskId, Exception ex) {
if (tascaSegonPlaHelper.isTasquesSegonPlaLoaded()) {
Map<Long, InfoSegonPla> map = tascaSegonPlaHelper.getTasquesSegonPla();
if (map.containsKey(taskId)) {
map.get(taskId).setError((ex.getCause() != null ? ex.getCause().getMessage() : ex.getMessage()));
}
}
}
@Override
public Long getTaskInstanceIdByTokenId(Long tokenId) {
return jbpmHelper.getTaskInstanceIdByTokenId(tokenId);
}
@Override
public void addMissatgeExecucioTascaSegonPla(Long taskId, String[] message) {
if (tascaSegonPlaHelper.isTasquesSegonPlaLoaded()) {
Map<Long, InfoSegonPla> map = tascaSegonPlaHelper.getTasquesSegonPla();
if (map.containsKey(taskId)) {
map.get(taskId).addMessage(message);
}
}
}
@Override
public boolean isTascaEnSegonPla(Long taskId) {
boolean result = false;
if (tascaSegonPlaHelper.isTasquesSegonPlaLoaded()) {
Map<Long, InfoSegonPla> map = tascaSegonPlaHelper.getTasquesSegonPla();
result = map.containsKey(taskId);
}
return result;
}
private Expedient getExpedientDonatProcessInstanceId(
String processInstanceId) {
return expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
}
private DefinicioProces getDefinicioProcesDonatProcessInstanceId(
String processInstanceId) {
JbpmProcessInstance processInstance = jbpmHelper.getProcessInstance(processInstanceId);
if (processInstance == null)
throw new NoTrobatException(JbpmProcessInstance.class, processInstanceId);
return definicioProcesRepository.findByJbpmId(
processInstance.getProcessDefinitionId());
}
private Entorn getEntornDonatProcessInstanceId(
String processInstanceId) {
JbpmProcessInstance processInstance = jbpmHelper.getRootProcessInstance(processInstanceId);
if (processInstance == null)
throw new NoTrobatException(JbpmProcessInstance.class, processInstanceId);
Expedient expedient = expedientHelper.findExpedientByProcessInstanceId(processInstanceId);
return expedient.getEntorn();
}
private static final Logger logger = LoggerFactory.getLogger(Jbpm3HeliumHelper.class);
}