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