Salvatore La Manna
4 anni fa
2 ha cambiato i file con 0 aggiunte e 270 eliminazioni
@ -1,254 +0,0 @@ |
|||||||
/** |
|
||||||
* |
|
||||||
* @author Salvatore La Manna, Manifattura Web Group per Regione Siciliana |
|
||||||
* |
|
||||||
*/ |
|
||||||
package it.mwg.sismica.bo.util; |
|
||||||
|
|
||||||
import flexjson.JSONSerializer; |
|
||||||
import it.tref.liferay.portos.bo.model.Avviso; |
|
||||||
import it.tref.liferay.portos.bo.model.ControlloPratica; |
|
||||||
import it.tref.liferay.portos.bo.model.DettPratica; |
|
||||||
import it.tref.liferay.portos.bo.model.IntPratica; |
|
||||||
import it.tref.liferay.portos.bo.model.Sorteggio; |
|
||||||
import it.tref.liferay.portos.bo.service.AvvisoLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.ConfigurazioneLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.ControlloPraticaLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.DettPraticaLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.IntPraticaLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.SorteggioLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.shared.util.ConfigurazioneConstants; |
|
||||||
import it.tref.liferay.portos.bo.shared.util.StatoPraticaConstants; |
|
||||||
import it.tref.liferay.portos.bo.util.AvvisoUtil; |
|
||||||
import it.tref.liferay.portos.bo.util.WorkflowConstants; |
|
||||||
|
|
||||||
import java.text.ParseException; |
|
||||||
import java.text.SimpleDateFormat; |
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.Date; |
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.List; |
|
||||||
import java.util.Map; |
|
||||||
|
|
||||||
import com.liferay.portal.kernel.cache.CacheRegistryUtil; |
|
||||||
import com.liferay.portal.kernel.cache.MultiVMPoolUtil; |
|
||||||
import com.liferay.portal.kernel.cache.SingleVMPoolUtil; |
|
||||||
import com.liferay.portal.kernel.exception.PortalException; |
|
||||||
import com.liferay.portal.kernel.exception.SystemException; |
|
||||||
import com.liferay.portal.kernel.log.Log; |
|
||||||
import com.liferay.portal.kernel.log.LogFactoryUtil; |
|
||||||
import com.liferay.portal.kernel.repository.model.FileEntry; |
|
||||||
import com.liferay.portal.kernel.repository.model.Folder; |
|
||||||
import com.liferay.portal.kernel.servlet.DirectServletRegistryUtil; |
|
||||||
import com.liferay.portal.kernel.util.StringPool; |
|
||||||
import com.liferay.portal.kernel.util.UniqueList; |
|
||||||
import com.liferay.portal.kernel.util.Validator; |
|
||||||
import com.liferay.portal.security.permission.ActionKeys; |
|
||||||
import com.liferay.portal.service.ServiceContext; |
|
||||||
import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil; |
|
||||||
|
|
||||||
public class PuliziaDatabase { |
|
||||||
private static final Log _log = LogFactoryUtil.getLog(PuliziaDatabase.class); |
|
||||||
private static final int SLICE = 1000; |
|
||||||
|
|
||||||
public static List<String> pulisci(ServiceContext serviceContext) throws SystemException { |
|
||||||
List<String> esito = new ArrayList<>(); |
|
||||||
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); |
|
||||||
Date min = null; |
|
||||||
Date max = null; |
|
||||||
try { |
|
||||||
min = sdf.parse("2020-09-25 18:40:00"); |
|
||||||
max = sdf.parse("2020-09-25 18:50:00"); |
|
||||||
} catch (ParseException e) { |
|
||||||
esitoLog(esito, "Errore date: " + e.getMessage()); |
|
||||||
return esito; |
|
||||||
} |
|
||||||
|
|
||||||
long companyId = serviceContext.getCompanyId(); |
|
||||||
long folderId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, |
|
||||||
ConfigurazioneConstants.TEMPLATE_FOLDER_ID); |
|
||||||
|
|
||||||
long templateAnnullamentoId = 0; |
|
||||||
try { |
|
||||||
Folder folder = DLAppLocalServiceUtil.getFolder(folderId); |
|
||||||
FileEntry template = DLAppLocalServiceUtil.getFileEntry(folder.getGroupId(), folderId, "ATAP"); |
|
||||||
templateAnnullamentoId = template.getFileEntryId(); |
|
||||||
} catch (PortalException e1) { |
|
||||||
} |
|
||||||
if (Validator.isNull(templateAnnullamentoId)) { |
|
||||||
esitoLog(esito, "Template ATAP non trovato"); |
|
||||||
return esito; |
|
||||||
} |
|
||||||
String descLongAnnullamento = "Annullamento d'ufficio"; |
|
||||||
|
|
||||||
long templateConformitaId = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, |
|
||||||
"conf.geniocivile.avviso.template.id.deposito.B2"); |
|
||||||
String descLongConformita = "Avviso di conformità"; |
|
||||||
|
|
||||||
List<Avviso> sbagliati = new ArrayList<>(); |
|
||||||
List<Long> inviate = new UniqueList<>(); |
|
||||||
List<Long> conformi = new UniqueList<>(); |
|
||||||
int start = 0; |
|
||||||
List<Avviso> avvisi = new ArrayList<>(); |
|
||||||
do { |
|
||||||
avvisi = AvvisoLocalServiceUtil.getAvvisos(start, start + SLICE); |
|
||||||
for (Avviso avviso : avvisi) { |
|
||||||
if (avviso.getDtAvviso().after(min) && avviso.getDtAvviso().before(max) |
|
||||||
&& avviso.getTipoDocumento().equalsIgnoreCase(StatoPraticaConstants.CONFORME)) { |
|
||||||
sbagliati.add(avviso); |
|
||||||
} else if (avviso.getFileEntryIdTemplate() == templateAnnullamentoId) { |
|
||||||
inviate.add(avviso.getIntPraticaId()); |
|
||||||
} else if (avviso.getFileEntryIdTemplate() == templateConformitaId) { |
|
||||||
conformi.add(avviso.getIntPraticaId()); |
|
||||||
} |
|
||||||
} |
|
||||||
start += SLICE; |
|
||||||
} while (avvisi.size() > 0); |
|
||||||
|
|
||||||
SimpleDateFormat dfmt = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); |
|
||||||
JSONSerializer jsonSerializer = new JSONSerializer(); |
|
||||||
|
|
||||||
int noIntPratica = 0; |
|
||||||
int annullatiA = 0; |
|
||||||
int annullatiB = 0; |
|
||||||
int annullatiC = 0; |
|
||||||
for (Avviso avviso : sbagliati) { |
|
||||||
long intPraticaId = avviso.getIntPraticaId(); |
|
||||||
if (!inviate.contains(intPraticaId)) { |
|
||||||
IntPratica intPratica = null; |
|
||||||
try { |
|
||||||
intPratica = IntPraticaLocalServiceUtil.getIntPratica(intPraticaId); |
|
||||||
} catch (PortalException e) { |
|
||||||
} |
|
||||||
if (Validator.isNull(intPratica)) { |
|
||||||
noIntPratica++; |
|
||||||
} else { |
|
||||||
Map<String, String> parameters = new HashMap<>(); |
|
||||||
parameters.put("dataProtocolloAnnullato", dfmt.format(avviso.getDtProtocollo())); |
|
||||||
parameters.put("numeroProtocolloAnnullato", avviso.getProtocollo()); |
|
||||||
|
|
||||||
DettPratica dettPratica = DettPraticaLocalServiceUtil |
|
||||||
.getLastCompletedByIntPratica(intPraticaId); |
|
||||||
List<ControlloPratica> controlli = ControlloPraticaLocalServiceUtil |
|
||||||
.findByIntPraticaId_Status(intPraticaId, WorkflowConstants.STATUS_PENDING); |
|
||||||
long controlloPraticaId = 0; |
|
||||||
if (controlli.size() > 0) { |
|
||||||
controlloPraticaId = controlli.get(controlli.size() - 1).getPrimaryKey(); |
|
||||||
} |
|
||||||
ServiceContext ctx = new ServiceContext(); |
|
||||||
ctx.setCompanyId(intPratica.getCompanyId()); |
|
||||||
ctx.setScopeGroupId(intPratica.getGroupId()); |
|
||||||
ctx.setUserId(intPratica.getUserId()); |
|
||||||
ctx.setGroupPermissions(new String[] { ActionKeys.VIEW }); |
|
||||||
|
|
||||||
String jsonParameters = StringPool.BLANK; |
|
||||||
|
|
||||||
switch (intPratica.getTipoProcedura().toUpperCase()) { |
|
||||||
case "A": |
|
||||||
annullatiA++; |
|
||||||
break; |
|
||||||
case "B": |
|
||||||
case "B1": |
|
||||||
Sorteggio sorteggio = SorteggioLocalServiceUtil.findByIntPratica(intPratica |
|
||||||
.getIntPraticaId()); |
|
||||||
jsonParameters = jsonSerializer.serialize(parameters); |
|
||||||
try { |
|
||||||
if (Validator.isNull(sorteggio)) { |
|
||||||
AvvisoLocalServiceUtil.addAvviso(intPraticaId, descLongAnnullamento, |
|
||||||
new Date(), AvvisoUtil.TIPO_AVVISO_DIRETTO, "MA", |
|
||||||
templateAnnullamentoId, dettPratica.getPrimaryKey(), |
|
||||||
DettPratica.class.getName(), StringPool.BLANK, jsonParameters, |
|
||||||
controlloPraticaId, serviceContext); |
|
||||||
} |
|
||||||
if (!conformi.contains(intPraticaId)) { |
|
||||||
AvvisoLocalServiceUtil.addAvviso(intPratica.getIntPraticaId(), |
|
||||||
descLongConformita, new Date(), AvvisoUtil.TIPO_AVVISO_DIRETTO, |
|
||||||
StatoPraticaConstants.CONFORME, templateConformitaId, |
|
||||||
dettPratica.getDettPraticaId(), DettPratica.class.getName(), |
|
||||||
controlloPraticaId, serviceContext); |
|
||||||
} |
|
||||||
} catch (PortalException e) { |
|
||||||
esitoLog(esito, "Errore nell'invio per pratica " + intPratica.getNumeroProgetto() |
|
||||||
+ ", " + e.getMessage()); |
|
||||||
} |
|
||||||
String logStr = "Pratica " + intPratica.getNumeroProgetto() + " (" + intPraticaId |
|
||||||
+ "), procedura " + intPratica.getTipoProcedura(); |
|
||||||
if (Validator.isNull(sorteggio)) { |
|
||||||
logStr += ", invio annullamento"; |
|
||||||
} else { |
|
||||||
logStr += ", non invio annullamento perché sorteggiata"; |
|
||||||
} |
|
||||||
if (conformi.contains(intPraticaId)) { |
|
||||||
logStr += ", conformità già inviata"; |
|
||||||
} else { |
|
||||||
logStr += ", invio conformità"; |
|
||||||
} |
|
||||||
esitoLog(esito, logStr); |
|
||||||
annullatiB++; |
|
||||||
break; |
|
||||||
case "C": |
|
||||||
Avviso valido = null; |
|
||||||
avvisi = AvvisoLocalServiceUtil.findByIntPraticaId_tipoDocumento(intPraticaId, |
|
||||||
StatoPraticaConstants.VIDIMATA); |
|
||||||
for (Avviso presente : avvisi) { |
|
||||||
if (presente.getPrimaryKey() != avviso.getPrimaryKey()) { |
|
||||||
if ((presente.getPrimaryKey() <= avviso.getPrimaryKey()) |
|
||||||
&& (Validator.isNull(valido) || (valido.getPrimaryKey() > presente |
|
||||||
.getPrimaryKey()))) { |
|
||||||
valido = presente; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
if (Validator.isNotNull(valido)) { |
|
||||||
parameters.put("dataProtocolloValido", dfmt.format(valido.getDtProtocollo())); |
|
||||||
parameters.put("numeroProtocolloValido", valido.getProtocollo()); |
|
||||||
jsonParameters = jsonSerializer.serialize(parameters); |
|
||||||
try { |
|
||||||
AvvisoLocalServiceUtil.addAvviso(intPraticaId, descLongAnnullamento, |
|
||||||
new Date(), AvvisoUtil.TIPO_AVVISO_DIRETTO, "MA", |
|
||||||
templateAnnullamentoId, dettPratica.getPrimaryKey(), |
|
||||||
DettPratica.class.getName(), StringPool.BLANK, jsonParameters, |
|
||||||
controlloPraticaId, serviceContext); |
|
||||||
} catch (PortalException e) { |
|
||||||
esitoLog(esito, |
|
||||||
"Errore nell'invio per pratica " + intPratica.getNumeroProgetto() |
|
||||||
+ ", " + e.getMessage()); |
|
||||||
} |
|
||||||
} |
|
||||||
esitoLog(esito, "Pratica " + intPratica.getNumeroProgetto() + " (" + intPraticaId |
|
||||||
+ "), procedura " + intPratica.getTipoProcedura() + ", " + jsonParameters); |
|
||||||
annullatiC++; |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
_log.info(sbagliati.size() + " avvisi"); |
|
||||||
_log.info("Procedura A = " + annullatiA); |
|
||||||
_log.info("Procedura B = " + annullatiB); |
|
||||||
_log.info("Procedura C = " + annullatiC); |
|
||||||
_log.info("IntPratica non esistente = " + noIntPratica); |
|
||||||
return esito; |
|
||||||
} |
|
||||||
|
|
||||||
public static List<String> pulisci2(ServiceContext serviceContext) { |
|
||||||
List<String> esito = new ArrayList<>(); |
|
||||||
|
|
||||||
try { |
|
||||||
SingleVMPoolUtil.clear(); |
|
||||||
MultiVMPoolUtil.clear(); |
|
||||||
CacheRegistryUtil.clear(); |
|
||||||
DirectServletRegistryUtil.clearServlets(); |
|
||||||
// WebCachePoolUtil.clear();
|
|
||||||
} catch (IllegalStateException e) { |
|
||||||
} |
|
||||||
|
|
||||||
return esito; |
|
||||||
} |
|
||||||
|
|
||||||
private static void esitoLog(List<String> esito, String msg) { |
|
||||||
_log.info(msg); |
|
||||||
esito.add(msg); |
|
||||||
} |
|
||||||
} |
|
Caricamento…
Reference in new issue