Salvatore La Manna
5 anni fa
46 ha cambiato i file con 965 aggiunte e 1501 eliminazioni
@ -0,0 +1,84 @@ |
|||||||
|
package it.mwg.sismica.bo.scheduler; |
||||||
|
|
||||||
|
import it.mwg.sismica.bo.util.SorteggioPraticaUtil; |
||||||
|
import it.tref.liferay.portos.bo.service.ConfigurazioneLocalServiceUtil; |
||||||
|
import it.tref.liferay.portos.bo.service.ConfigurazioneServiceUtil; |
||||||
|
import it.tref.liferay.portos.bo.shared.util.ConfigurazioneConstants; |
||||||
|
|
||||||
|
import java.text.ParseException; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.util.Calendar; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.concurrent.locks.Lock; |
||||||
|
import java.util.concurrent.locks.ReentrantLock; |
||||||
|
|
||||||
|
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.messaging.Message; |
||||||
|
import com.liferay.portal.kernel.messaging.MessageListener; |
||||||
|
import com.liferay.portal.kernel.messaging.MessageListenerException; |
||||||
|
import com.liferay.portal.model.Company; |
||||||
|
import com.liferay.portal.model.Role; |
||||||
|
import com.liferay.portal.model.RoleConstants; |
||||||
|
import com.liferay.portal.model.User; |
||||||
|
import com.liferay.portal.service.CompanyLocalServiceUtil; |
||||||
|
import com.liferay.portal.service.RoleLocalServiceUtil; |
||||||
|
import com.liferay.portal.service.ServiceContext; |
||||||
|
import com.liferay.portal.service.UserLocalServiceUtil; |
||||||
|
|
||||||
|
public class SchedulerSorteggio implements MessageListener { |
||||||
|
|
||||||
|
private static final Log _log = LogFactoryUtil.getLog(SchedulerSorteggio.class); |
||||||
|
|
||||||
|
private static final Lock lock = new ReentrantLock(); |
||||||
|
|
||||||
|
@Override |
||||||
|
public void receive(Message message) throws MessageListenerException { |
||||||
|
if (lock.tryLock()) { |
||||||
|
Date dt = new Date(); |
||||||
|
try { |
||||||
|
for (Company company : CompanyLocalServiceUtil.getCompanies()) { |
||||||
|
long companyId = company.getCompanyId(); |
||||||
|
if (isGiornoSorteggio(companyId, dt)) { |
||||||
|
_log.info("Sorteggio da scheduler"); |
||||||
|
SorteggioPraticaUtil.sorteggio(companyId, dt); |
||||||
|
|
||||||
|
Role role = RoleLocalServiceUtil.getRole(companyId, RoleConstants.ADMINISTRATOR); |
||||||
|
User user = UserLocalServiceUtil.getRoleUsers(role.getRoleId(), 0, 1).get(0); |
||||||
|
|
||||||
|
ServiceContext serviceContext = new ServiceContext(); |
||||||
|
serviceContext.setCompanyId(companyId); |
||||||
|
serviceContext.setScopeGroupId(company.getGroupId()); |
||||||
|
serviceContext.setUserId(user.getUserId()); |
||||||
|
|
||||||
|
Calendar calendar = Calendar.getInstance(); |
||||||
|
calendar.setTime(dt); |
||||||
|
calendar.add(Calendar.DAY_OF_MONTH, 7); |
||||||
|
|
||||||
|
ConfigurazioneServiceUtil.storeConfig( |
||||||
|
"conf.geniocivile.sorteggio.data.prossimo.sorteggio", new SimpleDateFormat( |
||||||
|
"dd/MM/yyyy").format(calendar.getTime()), serviceContext); |
||||||
|
} |
||||||
|
} |
||||||
|
} catch (SystemException | ParseException | PortalException e) { |
||||||
|
_log.error("error", e); |
||||||
|
} |
||||||
|
lock.unlock(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static boolean isGiornoSorteggio(long companyId, Date dt) throws SystemException, ParseException { |
||||||
|
Calendar calendar = Calendar.getInstance(); |
||||||
|
calendar.setTime(dt); |
||||||
|
int dowOggi = calendar.get(Calendar.DAY_OF_WEEK); |
||||||
|
int oraOggi = calendar.get(Calendar.HOUR_OF_DAY); |
||||||
|
int dowSorteggio = Integer.parseInt(ConfigurazioneLocalServiceUtil.findByC_ChiaveString(companyId, |
||||||
|
ConfigurazioneConstants.DAY_OF_WEEK_SORTEGGIO)); |
||||||
|
int oraSorteggio = Integer.parseInt(ConfigurazioneLocalServiceUtil.findByC_ChiaveString(companyId, |
||||||
|
ConfigurazioneConstants.HOUR_OF_DAY_SORTEGGIO)); |
||||||
|
|
||||||
|
return (dowOggi == dowSorteggio) && (oraOggi == oraSorteggio); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,334 @@ |
|||||||
|
package it.mwg.sismica.bo.util; |
||||||
|
|
||||||
|
import it.tref.liferay.portos.bo.model.Comune; |
||||||
|
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.Provincia; |
||||||
|
import it.tref.liferay.portos.bo.model.Soggetto; |
||||||
|
import it.tref.liferay.portos.bo.model.Territorio; |
||||||
|
import it.tref.liferay.portos.bo.service.AvvisoLocalServiceUtil; |
||||||
|
import it.tref.liferay.portos.bo.service.ComuneLocalServiceUtil; |
||||||
|
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.ProvinciaLocalServiceUtil; |
||||||
|
import it.tref.liferay.portos.bo.service.SoggettoLocalServiceUtil; |
||||||
|
import it.tref.liferay.portos.bo.service.SorteggioLocalServiceUtil; |
||||||
|
import it.tref.liferay.portos.bo.service.TerritorioLocalServiceUtil; |
||||||
|
import it.tref.liferay.portos.bo.shared.util.ConfigurazioneConstants; |
||||||
|
import it.tref.liferay.portos.bo.shared.util.StatoPraticaConstants; |
||||||
|
import it.tref.liferay.portos.bo.shared.util.TipoSoggettoUtil; |
||||||
|
import it.tref.liferay.portos.bo.util.AvvisoUtil; |
||||||
|
import it.tref.liferay.portos.report.shared.constants.ReportConstants; |
||||||
|
import it.tref.liferay.portos.report.shared.dto.ReportDto; |
||||||
|
import it.tref.liferay.portos.report.shared.util.ReportUtil; |
||||||
|
|
||||||
|
import java.security.SecureRandom; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Calendar; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.TreeMap; |
||||||
|
import java.util.concurrent.locks.Lock; |
||||||
|
import java.util.concurrent.locks.ReentrantLock; |
||||||
|
|
||||||
|
import org.apache.commons.lang.time.DateUtils; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.PortalException; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileEntry; |
||||||
|
import com.liferay.portal.kernel.repository.model.Folder; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.model.Company; |
||||||
|
import com.liferay.portal.model.Role; |
||||||
|
import com.liferay.portal.model.RoleConstants; |
||||||
|
import com.liferay.portal.service.CompanyLocalServiceUtil; |
||||||
|
import com.liferay.portal.service.RoleLocalServiceUtil; |
||||||
|
import com.liferay.portal.service.ServiceContext; |
||||||
|
import com.liferay.portal.service.UserLocalServiceUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFolderConstants; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil; |
||||||
|
|
||||||
|
public class SorteggioPraticaUtil { |
||||||
|
|
||||||
|
private static final Lock lock = new ReentrantLock(); |
||||||
|
|
||||||
|
public static final String DATE_TIME_FORMAT = "dd/MM/yyyy HH:mm:ss"; |
||||||
|
|
||||||
|
public final static String APERTO = "APERTO"; |
||||||
|
public final static String CHIUSO = "CHIUSO"; |
||||||
|
|
||||||
|
private static final String FOLDER_SORTEGGIO = "Report_Sorteggio"; |
||||||
|
|
||||||
|
private static final String FILE_ENTRY_TEMPLATE_SORTEGGIO = "Sorteggio"; |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* Implementazione della procedura di sorteggio secondo i requisiti della |
||||||
|
* Regione Siciliana. |
||||||
|
* |
||||||
|
* @author Manifattura Web Group per Regione Siciliana |
||||||
|
* @param companyId |
||||||
|
* @param dtSorteggio |
||||||
|
* @throws PortalException |
||||||
|
* @throws SystemException |
||||||
|
*/ |
||||||
|
public static List<String> sorteggio(long companyId, Date dtSorteggio) throws PortalException, |
||||||
|
SystemException { |
||||||
|
|
||||||
|
List<String> esito = new ArrayList<>(); |
||||||
|
if (lock.tryLock()) { |
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_FORMAT); |
||||||
|
esito.add("Sorteggio iniziato in data " + sdf.format(dtSorteggio) + ".<br><br>"); |
||||||
|
|
||||||
|
Map<String, List<IntPratica>> sorteggiabili = IntPraticaLocalServiceUtil.findSorteggiabiliNew( |
||||||
|
companyId, dtSorteggio); |
||||||
|
|
||||||
|
int numeroSorteggiabili = 0; |
||||||
|
for (Map.Entry<String, List<IntPratica>> s : sorteggiabili.entrySet()) { |
||||||
|
numeroSorteggiabili += s.getValue().size(); |
||||||
|
} |
||||||
|
esito.add("<h1>" + numeroSorteggiabili + " pratiche sottoposte a sorteggio.</h1>"); |
||||||
|
|
||||||
|
SecureRandom rnd = new SecureRandom(); |
||||||
|
List<IntPratica> sorteggiate = new ArrayList<>(); |
||||||
|
for (Map.Entry<String, List<IntPratica>> s : sorteggiabili.entrySet()) { |
||||||
|
String codiceProvincia = s.getKey(); |
||||||
|
List<IntPratica> elenco = s.getValue(); |
||||||
|
|
||||||
|
Provincia provincia = ProvinciaLocalServiceUtil.fetchByC_C(companyId, codiceProvincia); |
||||||
|
long numeroSorteggiate = (long) Math.ceil(0.1 * elenco.size()); |
||||||
|
String testoSorteggio; |
||||||
|
if (numeroSorteggiate > 1) { |
||||||
|
testoSorteggio = "saranno estratte " + numeroSorteggiate + " pratiche"; |
||||||
|
} else { |
||||||
|
testoSorteggio = "sarà estratta 1 pratica"; |
||||||
|
} |
||||||
|
esito.add("<h2><small>(" + sdf.format(new Date()) + ")</small> Provincia di " |
||||||
|
+ provincia.getProvincia() + " " + elenco.size() + " pratiche, " + testoSorteggio |
||||||
|
+ ".</h2><ol>"); |
||||||
|
|
||||||
|
Map<Integer, IntPratica> ordinate = new HashMap<>(); |
||||||
|
|
||||||
|
int chiave; |
||||||
|
for (IntPratica pratica : elenco) { |
||||||
|
do { |
||||||
|
chiave = rnd.nextInt(); |
||||||
|
} while (ordinate.containsKey(chiave)); |
||||||
|
ordinate.put(chiave, pratica); |
||||||
|
} |
||||||
|
TreeMap<Integer, IntPratica> mescolate = new TreeMap<Integer, IntPratica>(ordinate); |
||||||
|
|
||||||
|
long contatore = 0; |
||||||
|
for (Map.Entry<Integer, IntPratica> m : mescolate.entrySet()) { |
||||||
|
IntPratica pratica = m.getValue(); |
||||||
|
long intPraticaId = pratica.getIntPraticaId(); |
||||||
|
DettPratica dettPratica = DettPraticaLocalServiceUtil |
||||||
|
.getLastCompletedByIntPratica(intPraticaId); |
||||||
|
|
||||||
|
ServiceContext serviceContext = new ServiceContext(); |
||||||
|
serviceContext.setCompanyId(dettPratica.getCompanyId()); |
||||||
|
serviceContext.setScopeGroupId(dettPratica.getGroupId()); |
||||||
|
serviceContext.setUserId(dettPratica.getUserId()); |
||||||
|
|
||||||
|
if (contatore++ < numeroSorteggiate) { |
||||||
|
sorteggiate.add(pratica); |
||||||
|
esito.add("<li>Sorteggiata: " + pratica.getNumeroProgetto() + " (id " + intPraticaId |
||||||
|
+ ") del " + sdf.format(pratica.getDtPratica()) + " (" + m.getKey() |
||||||
|
+ ")</li>"); |
||||||
|
} else { |
||||||
|
pratica.setDtSorteggio(dtSorteggio); |
||||||
|
IntPraticaLocalServiceUtil.updateIntPratica(pratica); |
||||||
|
|
||||||
|
esito.add("<li>Non sorteggiata: " + pratica.getNumeroProgetto() + " (id " |
||||||
|
+ intPraticaId + ") del " + sdf.format(pratica.getDtPratica()) + " (" |
||||||
|
+ m.getKey() + ")</li>"); |
||||||
|
} |
||||||
|
} |
||||||
|
esito.add("</ol>"); |
||||||
|
} |
||||||
|
if (sorteggiate.size() > 0) { |
||||||
|
saveSorteggio(companyId, sorteggiate, dtSorteggio); |
||||||
|
} |
||||||
|
esito.add("Sorteggio terminato in data " + sdf.format(new Date()) + ".<br><br>"); |
||||||
|
|
||||||
|
creaReportSorteggio(companyId, dtSorteggio, esito); |
||||||
|
|
||||||
|
// Salvataggio data ultimo sorteggio
|
||||||
|
ServiceContext serviceContext = new ServiceContext(); |
||||||
|
serviceContext.setCompanyId(companyId); |
||||||
|
serviceContext.setScopeGroupId(-1L); |
||||||
|
serviceContext.setUserId(UserLocalServiceUtil.getDefaultUserId(companyId)); |
||||||
|
ConfigurazioneLocalServiceUtil.storeConfig(ConfigurazioneConstants.DATE_ULTIMO_SORTEGGIO, |
||||||
|
sdf.format(dtSorteggio), serviceContext); |
||||||
|
|
||||||
|
lock.unlock(); |
||||||
|
} |
||||||
|
|
||||||
|
return esito; |
||||||
|
} |
||||||
|
|
||||||
|
private static FileEntry creaReportSorteggio(long companyId, Date dtSorteggio, List<String> contenuto) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
Role role = RoleLocalServiceUtil.getRole(companyId, RoleConstants.ADMINISTRATOR); |
||||||
|
long userId = UserLocalServiceUtil.getRoleUsers(role.getRoleId(), 0, 1).get(0).getUserId(); |
||||||
|
|
||||||
|
Company company = CompanyLocalServiceUtil.getCompany(companyId); |
||||||
|
Folder folderTemplate = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
||||||
|
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, "Template"); |
||||||
|
FileEntry fileEntryTemplate = DLAppLocalServiceUtil.getFileEntry(folderTemplate.getGroupId(), |
||||||
|
folderTemplate.getFolderId(), FILE_ENTRY_TEMPLATE_SORTEGGIO); |
||||||
|
|
||||||
|
Folder folderReport = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
||||||
|
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_SORTEGGIO); |
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder(contenuto.size()); |
||||||
|
for (String riga : contenuto) { |
||||||
|
sb.append(riga); |
||||||
|
} |
||||||
|
Map<String, Object> parameters = new HashMap<String, Object>(); |
||||||
|
parameters.put("html", sb.toString()); |
||||||
|
|
||||||
|
ReportDto reportDto = new ReportDto(); |
||||||
|
reportDto.setFileEntryIds(new long[] { fileEntryTemplate.getFileEntryId() }); |
||||||
|
reportDto.setFolderId(folderReport.getFolderId()); |
||||||
|
reportDto.setFileName(reportFileName(companyId, dtSorteggio)); |
||||||
|
|
||||||
|
reportDto.setHeader(""); |
||||||
|
reportDto.setHeaderHeight(1); |
||||||
|
reportDto.setFooter(""); |
||||||
|
reportDto.setFooterHeight(40); |
||||||
|
|
||||||
|
reportDto.setParameters(parameters); |
||||||
|
reportDto.setShowNumberOfPage(true); |
||||||
|
reportDto.setType(ReportConstants.ReportType.VELOCITY_TO_PDF.toString()); |
||||||
|
|
||||||
|
String resourcePath = SorteggioPraticaUtil.class.getName().replaceAll("\\w+\\.", "../") |
||||||
|
.replace(SorteggioPraticaUtil.class.getSimpleName(), "resource/asseverazioni"); |
||||||
|
reportDto.setPortalURL(SorteggioPraticaUtil.class.getResource(resourcePath).getPath()); |
||||||
|
|
||||||
|
ReportUtil.generateReport(companyId, userId, reportDto, null); |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
private static String reportFileName(long companyId, Date dtSorteggio) { |
||||||
|
Calendar calSorteggio = DateUtils.toCalendar(dtSorteggio); |
||||||
|
String anno = String.valueOf(calSorteggio.get(Calendar.YEAR)); |
||||||
|
int settimana = calSorteggio.get(Calendar.WEEK_OF_YEAR); |
||||||
|
return reportFileName(companyId, anno, settimana); |
||||||
|
} |
||||||
|
|
||||||
|
private static String reportFileName(long companyId, String anno, int settimana) { |
||||||
|
return "Sorteggio_" + settimana + "_" + anno + "_" + companyId; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Manifattura Web Group per Regione Siciliana |
||||||
|
* |
||||||
|
* @param companyId |
||||||
|
* @param pratiche |
||||||
|
* Lista di pratiche sorteggiate |
||||||
|
* @param dtSorteggio |
||||||
|
* Data del sorteggio |
||||||
|
* @throws PortalException |
||||||
|
* @throws SystemException |
||||||
|
*/ |
||||||
|
private static void saveSorteggio(long companyId, List<IntPratica> pratiche, Date dtSorteggio) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
long numeroEstrazione = 1; |
||||||
|
for (IntPratica pratica : pratiche) { |
||||||
|
|
||||||
|
Territorio territorio = TerritorioLocalServiceUtil.getTerritorio(pratica.getTerritorioId()); |
||||||
|
Comune comune = ComuneLocalServiceUtil.getComune(territorio.getComuneId()); |
||||||
|
Provincia provincia = ProvinciaLocalServiceUtil.fetchByC_C(territorio.getCompanyId(), |
||||||
|
comune.getCodiceProvincia()); |
||||||
|
|
||||||
|
DettPratica dettPratica = DettPraticaLocalServiceUtil.getLastCompletedByIntPratica(pratica |
||||||
|
.getIntPraticaId()); |
||||||
|
|
||||||
|
String committente = ""; |
||||||
|
List<Soggetto> soggetti = SoggettoLocalServiceUtil |
||||||
|
.findByIntPratica_TipologiaSoggetto_Aggiuntivo_Rimosso(pratica.getIntPraticaId(), |
||||||
|
TipoSoggettoUtil.COMMITTENTE, false, false); |
||||||
|
if (soggetti.size() > 0) { |
||||||
|
Soggetto soggetto = soggetti.get(0); |
||||||
|
|
||||||
|
// Bug 32771
|
||||||
|
if (Validator.isNotNull(soggetto.getNome()) && Validator.isNotNull(soggetto.getCognome())) |
||||||
|
committente = soggetto.getNome() + " " + soggetto.getCognome(); |
||||||
|
else if (Validator.isNotNull(soggetto.getDenominazione())) |
||||||
|
committente = soggetto.getDenominazione(); |
||||||
|
else |
||||||
|
committente = soggetto.getLegaleRap(); |
||||||
|
} |
||||||
|
|
||||||
|
// anno, mese, settimana della data sorteggio
|
||||||
|
Calendar calSorteggio = Calendar.getInstance(); |
||||||
|
calSorteggio.setTime(dtSorteggio); |
||||||
|
|
||||||
|
String anno = String.valueOf(calSorteggio.get(Calendar.YEAR)); |
||||||
|
String mese = String.format("%02d", calSorteggio.get(Calendar.MONTH) + 1); |
||||||
|
int settimana = calSorteggio.get(Calendar.WEEK_OF_YEAR); |
||||||
|
|
||||||
|
ServiceContext serviceContext = new ServiceContext(); |
||||||
|
serviceContext.setCompanyId(dettPratica.getCompanyId()); |
||||||
|
serviceContext.setScopeGroupId(dettPratica.getGroupId()); |
||||||
|
serviceContext.setUserId(dettPratica.getUserId()); |
||||||
|
|
||||||
|
SorteggioLocalServiceUtil.addSorteggio(pratica.getIntPraticaId(), dettPratica.getDettPraticaId(), |
||||||
|
anno, mese, settimana, dtSorteggio, "", APERTO, "", numeroEstrazione++, |
||||||
|
pratica.getNumeroProgetto(), committente, comune.getDenominazione(), |
||||||
|
provincia.getProvincia(), false, pratica.getIntPraticaId(), false, serviceContext); |
||||||
|
|
||||||
|
ControlloPratica controlloPratica = ControlloPraticaLocalServiceUtil.addControlloPratica( |
||||||
|
pratica.getGroupId(), pratica.getUserId(), pratica.getIntPraticaId(), |
||||||
|
dettPratica.getDettPraticaId(), true, serviceContext); |
||||||
|
|
||||||
|
long fileEntryIdTemplate = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong( |
||||||
|
serviceContext.getCompanyId(), "conf.geniocivile.avviso.template.id.deposito.S"); |
||||||
|
|
||||||
|
AvvisoLocalServiceUtil.addAvviso(pratica.getIntPraticaId(), "Avviso di sorteggio", dtSorteggio, |
||||||
|
AvvisoUtil.TIPO_AVVISO_DIRETTO, StatoPraticaConstants.SOTTOPOSTA_A_PARERE, |
||||||
|
fileEntryIdTemplate, dettPratica.getDettPraticaId(), DettPratica.class.getName(), |
||||||
|
controlloPratica.getControlloPraticaId(), serviceContext); |
||||||
|
|
||||||
|
IntPraticaLocalServiceUtil.updateIntPraticaSorteggio(pratica.getIntPraticaId(), dtSorteggio, |
||||||
|
StatoPraticaConstants.SOTTOPOSTA_A_PARERE); |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static FileEntry getFileEntrySorteggio(long companyId, long groupId, Date dtSorteggio) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
Company company = CompanyLocalServiceUtil.getCompany(companyId); |
||||||
|
|
||||||
|
Folder folder = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
||||||
|
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_SORTEGGIO); |
||||||
|
String fileName = reportFileName(companyId, dtSorteggio); |
||||||
|
|
||||||
|
FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(groupId, folder.getFolderId(), fileName); |
||||||
|
|
||||||
|
return fileEntry; |
||||||
|
} |
||||||
|
|
||||||
|
public static FileEntry getFileEntrySorteggio(long companyId, long groupId, int settimana, String anno) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
Company company = CompanyLocalServiceUtil.getCompany(companyId); |
||||||
|
|
||||||
|
Folder folder = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
||||||
|
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_SORTEGGIO); |
||||||
|
String fileName = reportFileName(companyId, anno, settimana); |
||||||
|
|
||||||
|
return DLAppLocalServiceUtil.getFileEntry(groupId, folder.getFolderId(), fileName); |
||||||
|
} |
||||||
|
} |
@ -1,155 +0,0 @@ |
|||||||
package it.tref.liferay.portos.bo.scheduler; |
|
||||||
|
|
||||||
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.Territorio; |
|
||||||
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.service.TerritorioLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.util.SorteggioPraticaUtil; |
|
||||||
|
|
||||||
import java.util.Date; |
|
||||||
import java.util.List; |
|
||||||
import java.util.concurrent.TimeUnit; |
|
||||||
import java.util.concurrent.locks.Lock; |
|
||||||
import java.util.concurrent.locks.ReentrantLock; |
|
||||||
|
|
||||||
import com.liferay.portal.kernel.log.Log; |
|
||||||
import com.liferay.portal.kernel.log.LogFactoryUtil; |
|
||||||
import com.liferay.portal.kernel.messaging.Message; |
|
||||||
import com.liferay.portal.kernel.messaging.MessageListener; |
|
||||||
import com.liferay.portal.kernel.messaging.MessageListenerException; |
|
||||||
import com.liferay.portal.model.Company; |
|
||||||
import com.liferay.portal.service.CompanyLocalServiceUtil; |
|
||||||
import com.liferay.portal.service.ServiceContext; |
|
||||||
import com.liferay.util.portlet.PortletProps; |
|
||||||
|
|
||||||
public class SchedulerSorteggio implements MessageListener { |
|
||||||
|
|
||||||
private static final Log _log = LogFactoryUtil.getLog(SchedulerSorteggio.class); |
|
||||||
|
|
||||||
private static final Lock lock = new ReentrantLock(); |
|
||||||
|
|
||||||
@Override |
|
||||||
public void receive(Message message) throws MessageListenerException { |
|
||||||
if (lock.tryLock()) { |
|
||||||
sorteggio(); |
|
||||||
lock.unlock(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void sorteggio() { |
|
||||||
|
|
||||||
try { |
|
||||||
|
|
||||||
String defaultCompany = PortletProps.get("portos.default.company"); |
|
||||||
for (Company company : CompanyLocalServiceUtil.getCompanies()) { |
|
||||||
long companyId = company.getCompanyId(); |
|
||||||
Date now = new Date(); |
|
||||||
|
|
||||||
if (SorteggioPraticaUtil.isGiornoSorteggio(companyId, now)) { |
|
||||||
// _log.info("È giorno di sorteggio per la compagnia " + companyId);
|
|
||||||
// SorteggioLocalServiceUtil.sorteggio(companyId, now);
|
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} catch (Exception e) { |
|
||||||
_log.error("error", e); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private void avvioWorkflowSorteggiate() { |
|
||||||
|
|
||||||
try { |
|
||||||
// int count =
|
|
||||||
// SorteggioLocalServiceUtil.countDettPraticaWorkflowNonAvviato();
|
|
||||||
// if (count > 0) {
|
|
||||||
// for (int cursor = 0; cursor <= count; cursor += SIZE) {
|
|
||||||
List<Long> dettPraticaIds = SorteggioLocalServiceUtil.getDettPraticaWorkflowNonAvviato(-1, -1); |
|
||||||
for (Long dettPraticaId : dettPraticaIds) { |
|
||||||
DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(dettPraticaId); |
|
||||||
long intPraticaId = dettPratica.getIntPraticaId(); |
|
||||||
ServiceContext serviceContext = getServiceContext(dettPratica); |
|
||||||
avvioWorkflow(intPraticaId, dettPratica, serviceContext); |
|
||||||
} |
|
||||||
// }
|
|
||||||
// }
|
|
||||||
} catch (Exception e) { |
|
||||||
_log.error("error", e); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// TODO sanatoriaRimossa
|
|
||||||
// private void avvioWorkflowSanatoriaDepositoOpereNonConformi() {
|
|
||||||
// try {
|
|
||||||
// int count =
|
|
||||||
// WorkflowUtil.countIntPraticaIdsPerAvvioWorkflowSanatoriaDepositoOpereNonConformi();
|
|
||||||
// if (count > 0) {
|
|
||||||
// for (int cursor = 0; cursor <= count; cursor += SIZE) {
|
|
||||||
// List<Long> intPraticaIds =
|
|
||||||
// WorkflowUtil.findIntPraticaIdsPerAvvioWorkflowSanatoriaDepositoOpereNonConformi(cursor,
|
|
||||||
// cursor
|
|
||||||
// + SIZE);
|
|
||||||
// for (Long intPraticaId : intPraticaIds) {
|
|
||||||
// DettPratica dettPratica =
|
|
||||||
// DettPraticaLocalServiceUtil.getLastDettPratica(intPraticaId);
|
|
||||||
// ServiceContext serviceContext = getServiceContext(dettPratica);
|
|
||||||
// avvioWorkflow(intPraticaId, dettPratica, serviceContext);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// _log.error("error", e);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private void avvioWorkflowSanatoriaDepositoOpereConformi() {
|
|
||||||
// try {
|
|
||||||
// int count =
|
|
||||||
// WorkflowUtil.countIntPraticaIdsPerAvvioWorkflowSanatoriaDepositoOpereConformi();
|
|
||||||
// if (count > 0) {
|
|
||||||
// for (int cursor = 0; cursor <= count; cursor += SIZE) {
|
|
||||||
// List<Long> intPraticaIds =
|
|
||||||
// WorkflowUtil.findIntPraticaIdsPerAvvioWorkflowSanatoriaDepositoOpereConformi(cursor,
|
|
||||||
// cursor +
|
|
||||||
// SIZE);
|
|
||||||
// for (Long intPraticaId : intPraticaIds) {
|
|
||||||
// DettPratica dettPratica =
|
|
||||||
// DettPraticaLocalServiceUtil.getLastDettPratica(intPraticaId);
|
|
||||||
// ServiceContext serviceContext = getServiceContext(dettPratica);
|
|
||||||
// avvioWorkflow(intPraticaId, dettPratica, serviceContext);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// _log.error("error", e);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
private void avvioWorkflow(long intPraticaId, DettPratica dettPratica, ServiceContext serviceContext) |
|
||||||
throws Exception { |
|
||||||
|
|
||||||
long userId = dettPratica.getUserId(); |
|
||||||
IntPratica intPratica = IntPraticaLocalServiceUtil.getIntPratica(dettPratica.getIntPraticaId()); |
|
||||||
Territorio territorio = TerritorioLocalServiceUtil.getTerritorio(intPratica.getTerritorioId()); |
|
||||||
ControlloPratica cp = ControlloPraticaLocalServiceUtil.addControlloPratica(territorio.getGroupId(), |
|
||||||
userId, intPratica.getIntPraticaId(), dettPratica.getDettPraticaId(), false, serviceContext); |
|
||||||
|
|
||||||
// ADT: bug id=7 gestione workflow
|
|
||||||
ControlloPraticaLocalServiceUtil.gestioneWFVarianti(cp); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
private ServiceContext getServiceContext(DettPratica dettPratica) { |
|
||||||
|
|
||||||
ServiceContext serviceContext = new ServiceContext(); |
|
||||||
serviceContext.setCompanyId(dettPratica.getCompanyId()); |
|
||||||
serviceContext.setScopeGroupId(dettPratica.getGroupId()); |
|
||||||
serviceContext.setUserId(dettPratica.getUserId()); |
|
||||||
return serviceContext; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,753 +0,0 @@ |
|||||||
package it.tref.liferay.portos.bo.util; |
|
||||||
|
|
||||||
import it.tref.liferay.portos.bo.model.Comune; |
|
||||||
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.Provincia; |
|
||||||
import it.tref.liferay.portos.bo.model.Soggetto; |
|
||||||
import it.tref.liferay.portos.bo.model.Sorteggio; |
|
||||||
import it.tref.liferay.portos.bo.model.Territorio; |
|
||||||
import it.tref.liferay.portos.bo.report.builder.bean.ReportSorteggioBean; |
|
||||||
import it.tref.liferay.portos.bo.report.builder.builder.ReportSorteggioBeanBuilder; |
|
||||||
import it.tref.liferay.portos.bo.service.AvvisoLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.ComuneLocalServiceUtil; |
|
||||||
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.ProvinciaLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.SoggettoLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.SorteggioLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.service.TerritorioLocalServiceUtil; |
|
||||||
import it.tref.liferay.portos.bo.shared.util.ConfigurazioneConstants; |
|
||||||
import it.tref.liferay.portos.bo.shared.util.FascicoloURLUtil; |
|
||||||
import it.tref.liferay.portos.bo.shared.util.StatoPraticaConstants; |
|
||||||
import it.tref.liferay.portos.bo.shared.util.TipoSoggettoUtil; |
|
||||||
import it.tref.liferay.portos.mailmanager.shared.messaging.util.MailManagerUtil; |
|
||||||
import it.tref.liferay.portos.report.shared.constants.ReportConstants; |
|
||||||
import it.tref.liferay.portos.report.shared.dto.ReportDto; |
|
||||||
import it.tref.liferay.portos.report.shared.dto.ReportResultDto; |
|
||||||
import it.tref.liferay.portos.report.shared.util.ReportUtil; |
|
||||||
|
|
||||||
import java.io.File; |
|
||||||
import java.io.FileWriter; |
|
||||||
import java.io.IOException; |
|
||||||
import java.security.Provider; |
|
||||||
import java.security.SecureRandom; |
|
||||||
import java.security.Security; |
|
||||||
import java.text.MessageFormat; |
|
||||||
import java.text.ParseException; |
|
||||||
import java.text.SimpleDateFormat; |
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.Calendar; |
|
||||||
import java.util.Collections; |
|
||||||
import java.util.Comparator; |
|
||||||
import java.util.Date; |
|
||||||
import java.util.HashMap; |
|
||||||
import java.util.List; |
|
||||||
import java.util.Map; |
|
||||||
import java.util.TreeMap; |
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils; |
|
||||||
import org.apache.commons.lang.time.DateUtils; |
|
||||||
|
|
||||||
import com.liferay.portal.kernel.exception.PortalException; |
|
||||||
import com.liferay.portal.kernel.exception.SystemException; |
|
||||||
import com.liferay.portal.kernel.json.JSONFactoryUtil; |
|
||||||
import com.liferay.portal.kernel.json.JSONObject; |
|
||||||
import com.liferay.portal.kernel.language.LanguageUtil; |
|
||||||
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.util.GetterUtil; |
|
||||||
import com.liferay.portal.kernel.util.LocaleUtil; |
|
||||||
import com.liferay.portal.kernel.util.PropsUtil; |
|
||||||
import com.liferay.portal.kernel.util.StringPool; |
|
||||||
import com.liferay.portal.kernel.util.Validator; |
|
||||||
import com.liferay.portal.kernel.workflow.WorkflowConstants; |
|
||||||
import com.liferay.portal.model.Company; |
|
||||||
import com.liferay.portal.model.Role; |
|
||||||
import com.liferay.portal.model.RoleConstants; |
|
||||||
import com.liferay.portal.service.CompanyLocalServiceUtil; |
|
||||||
import com.liferay.portal.service.RoleLocalServiceUtil; |
|
||||||
import com.liferay.portal.service.ServiceContext; |
|
||||||
import com.liferay.portal.service.UserLocalServiceUtil; |
|
||||||
import com.liferay.portlet.documentlibrary.NoSuchFileException; |
|
||||||
import com.liferay.portlet.documentlibrary.model.DLFolder; |
|
||||||
import com.liferay.portlet.documentlibrary.model.DLFolderConstants; |
|
||||||
import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil; |
|
||||||
import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil; |
|
||||||
|
|
||||||
public class SorteggioPraticaUtil { |
|
||||||
|
|
||||||
private static Log _log = LogFactoryUtil.getLog(SorteggioPraticaUtil.class); |
|
||||||
|
|
||||||
public static final String DATE_TIME_FORMAT = "dd/MM/yyyy HH:mm:ss"; |
|
||||||
|
|
||||||
public final static String APERTO = "APERTO"; |
|
||||||
public final static String CHIUSO = "CHIUSO"; |
|
||||||
|
|
||||||
private static final String FOLDER_TEMPLATE_SORTEGGIO = "Template_Sorteggio"; |
|
||||||
|
|
||||||
private static final String FOLDER_SORTEGGIO = "Report_Sorteggio"; |
|
||||||
|
|
||||||
private static final String FILE_ENTRY_TEMPLATE_SORTEGGIO = "Sorteggio"; |
|
||||||
|
|
||||||
private static final String FILE_ENTRY_SORTEGGIO = "Sorteggio_{0}_{1}_{2}"; |
|
||||||
private static final String FILE_ENTRY_SORTEGGIO_OLD = "Sorteggio_{0}_{1}_{2}_{3}"; |
|
||||||
|
|
||||||
public static Date getDataSorteggio(long companyId, boolean next) throws SystemException { |
|
||||||
|
|
||||||
Date dtSorteggio = null; |
|
||||||
// Date dtSorteggio = new Date();
|
|
||||||
|
|
||||||
Integer dayOfWeekSorteggio = GetterUtil.getInteger(ConfigurazioneLocalServiceUtil |
|
||||||
.findByC_ChiaveString(companyId, ConfigurazioneConstants.DAY_OF_WEEK_SORTEGGIO)); |
|
||||||
Integer startDaySorteggio = GetterUtil.getInteger(ConfigurazioneLocalServiceUtil |
|
||||||
.findByC_ChiaveString(companyId, ConfigurazioneConstants.START_DAY_SORTEGGIO)); |
|
||||||
|
|
||||||
if (dayOfWeekSorteggio > 0 && dayOfWeekSorteggio <= 7 && startDaySorteggio > 0 |
|
||||||
&& startDaySorteggio <= 28) { |
|
||||||
|
|
||||||
Calendar calendarSorteggio = Calendar.getInstance(); |
|
||||||
calendarSorteggio.set(Calendar.DATE, startDaySorteggio); |
|
||||||
if (next) { |
|
||||||
calendarSorteggio.add(Calendar.MONTH, 1); |
|
||||||
} |
|
||||||
while (calendarSorteggio.get(Calendar.DAY_OF_WEEK) != dayOfWeekSorteggio) { |
|
||||||
calendarSorteggio.add(Calendar.DATE, 1); |
|
||||||
} |
|
||||||
// se festività -> prossima settimana
|
|
||||||
if (FestivitaUtil.isFestivo(calendarSorteggio.getTime())) { |
|
||||||
calendarSorteggio.add(Calendar.WEEK_OF_YEAR, 1); |
|
||||||
} |
|
||||||
dtSorteggio = DateUtils.truncate(calendarSorteggio, Calendar.DATE).getTime(); |
|
||||||
} |
|
||||||
|
|
||||||
return dtSorteggio; |
|
||||||
} |
|
||||||
|
|
||||||
public static boolean isGiornoSorteggio(long companyId, Date dt) throws SystemException, ParseException { |
|
||||||
Date dtUltimoSorteggio = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss") |
|
||||||
.parse(ConfigurazioneLocalServiceUtil.findByC_ChiaveString(companyId, |
|
||||||
ConfigurazioneConstants.DATE_ULTIMO_SORTEGGIO)); |
|
||||||
|
|
||||||
// Almeno 3 giorni dall'ultimo sorteggio
|
|
||||||
if (dt.getTime() - dtUltimoSorteggio.getTime() > 3 * 24 * 60 * 60 * 1000) { |
|
||||||
int dowOggi = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); |
|
||||||
int dowSorteggio = Integer.parseInt(ConfigurazioneLocalServiceUtil.findByC_ChiaveString( |
|
||||||
companyId, ConfigurazioneConstants.DAY_OF_WEEK_SORTEGGIO)); |
|
||||||
|
|
||||||
if (dowOggi == dowSorteggio) { |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* |
|
||||||
* Implementazione della procedura di sorteggio secondo i requisiti della |
|
||||||
* Regione Siciliana. |
|
||||||
* |
|
||||||
* @author Manifattura Web Group per Regione Siciliana |
|
||||||
* @param companyId |
|
||||||
* @param dtSorteggio |
|
||||||
* @throws PortalException |
|
||||||
* @throws SystemException |
|
||||||
*/ |
|
||||||
public static List<String> sorteggio(long companyId, Date dtSorteggio) throws PortalException, |
|
||||||
SystemException { |
|
||||||
|
|
||||||
List<String> esito = new ArrayList<>(); |
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); |
|
||||||
esito.add("Sorteggio iniziato in data " + sdf.format(dtSorteggio) + ".<br><br>"); |
|
||||||
|
|
||||||
Map<String, List<IntPratica>> sorteggiabili = IntPraticaLocalServiceUtil.findSorteggiabiliNew( |
|
||||||
companyId, dtSorteggio); |
|
||||||
|
|
||||||
int numeroSorteggiabili = 0; |
|
||||||
for (Map.Entry<String, List<IntPratica>> s : sorteggiabili.entrySet()) { |
|
||||||
numeroSorteggiabili += s.getValue().size(); |
|
||||||
} |
|
||||||
esito.add("<h1>" + numeroSorteggiabili + " pratiche sottoposte a sorteggio.</h1>"); |
|
||||||
|
|
||||||
SecureRandom rnd = new SecureRandom(); |
|
||||||
List<IntPratica> sorteggiate = new ArrayList<>(); |
|
||||||
for (Map.Entry<String, List<IntPratica>> s : sorteggiabili.entrySet()) { |
|
||||||
String codiceProvincia = s.getKey(); |
|
||||||
List<IntPratica> elenco = s.getValue(); |
|
||||||
|
|
||||||
Provincia provincia = ProvinciaLocalServiceUtil.fetchByC_C(companyId, codiceProvincia); |
|
||||||
long numeroSorteggiate = (long) Math.ceil(0.1 * elenco.size()); |
|
||||||
String testoSorteggio; |
|
||||||
if (numeroSorteggiate > 1) { |
|
||||||
testoSorteggio = "saranno estratte " + numeroSorteggiate + " pratiche"; |
|
||||||
} else { |
|
||||||
testoSorteggio = "sarà estratta 1 pratica"; |
|
||||||
} |
|
||||||
esito.add("<h2>Provincia di " + provincia.getProvincia() + " " + elenco.size() |
|
||||||
+ " pratiche, " + testoSorteggio + ".</h2><ol>"); |
|
||||||
|
|
||||||
Map<Integer, IntPratica> ordinate = new HashMap<>(); |
|
||||||
|
|
||||||
int chiave; |
|
||||||
for (IntPratica pratica : elenco) { |
|
||||||
do { |
|
||||||
chiave = rnd.nextInt(); |
|
||||||
} while (ordinate.containsKey(chiave)); |
|
||||||
ordinate.put(chiave, pratica); |
|
||||||
} |
|
||||||
TreeMap<Integer, IntPratica> mescolate = new TreeMap<Integer, IntPratica>(ordinate); |
|
||||||
|
|
||||||
long contatore = 0; |
|
||||||
long fileEntryIdTemplate = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong(companyId, |
|
||||||
"conf.geniocivile.avviso.template.id.deposito.B2"); |
|
||||||
for (Map.Entry<Integer, IntPratica> m : mescolate.entrySet()) { |
|
||||||
IntPratica pratica = m.getValue(); |
|
||||||
long intPraticaId = pratica.getIntPraticaId(); |
|
||||||
DettPratica dettPratica = DettPraticaLocalServiceUtil |
|
||||||
.getLastCompletedByIntPratica(intPraticaId); |
|
||||||
|
|
||||||
ServiceContext serviceContext = new ServiceContext(); |
|
||||||
serviceContext.setCompanyId(dettPratica.getCompanyId()); |
|
||||||
serviceContext.setScopeGroupId(dettPratica.getGroupId()); |
|
||||||
serviceContext.setUserId(dettPratica.getUserId()); |
|
||||||
|
|
||||||
if (contatore++ < numeroSorteggiate) { |
|
||||||
sorteggiate.add(pratica); |
|
||||||
esito.add("<li>Sorteggiata: " + pratica.getNumeroProgetto() + " (id " + intPraticaId |
|
||||||
+ ") del " + sdf.format(pratica.getDtPratica()) + " (" + m.getKey() + ")</li>"); |
|
||||||
} else { |
|
||||||
pratica.setDtSorteggio(dtSorteggio); |
|
||||||
IntPraticaLocalServiceUtil.updateIntPratica(pratica); |
|
||||||
|
|
||||||
esito.add("<li>Non sorteggiata: " + pratica.getNumeroProgetto() + " (id " + intPraticaId |
|
||||||
+ ") del " + sdf.format(pratica.getDtPratica()) + " (" + m.getKey() + ")</li>"); |
|
||||||
} |
|
||||||
} |
|
||||||
esito.add("</ol>"); |
|
||||||
} |
|
||||||
if (sorteggiate.size() > 0) { |
|
||||||
saveSorteggio(companyId, sorteggiate, dtSorteggio); |
|
||||||
} |
|
||||||
esito.add("Sorteggio terminato in data " + sdf.format(dtSorteggio) + ".<br><br>"); |
|
||||||
|
|
||||||
creaReportSorteggio(companyId, dtSorteggio, esito); |
|
||||||
|
|
||||||
// Salvataggio data ultimo sorteggio
|
|
||||||
ServiceContext serviceContext = new ServiceContext(); |
|
||||||
serviceContext.setCompanyId(companyId); |
|
||||||
serviceContext.setScopeGroupId(-1L); |
|
||||||
serviceContext.setUserId(UserLocalServiceUtil.getDefaultUserId(companyId)); |
|
||||||
SimpleDateFormat simpleDateTimeFormat = new SimpleDateFormat(DATE_TIME_FORMAT); |
|
||||||
esito.add("Sorteggio eseguito in data " + simpleDateTimeFormat.format(dtSorteggio)); |
|
||||||
ConfigurazioneLocalServiceUtil.storeConfig(ConfigurazioneConstants.DATE_ULTIMO_SORTEGGIO, |
|
||||||
simpleDateTimeFormat.format(dtSorteggio), serviceContext); |
|
||||||
|
|
||||||
// Log su file
|
|
||||||
String path = PropsUtil.get("liferay.home") + "/sorteggi"; |
|
||||||
try { |
|
||||||
File folder = new File(path); |
|
||||||
if (!folder.exists()) { |
|
||||||
folder.mkdirs(); |
|
||||||
} |
|
||||||
FileWriter writer = new FileWriter(path + "/sorteggio-" |
|
||||||
+ new SimpleDateFormat("yyyy-MM-dd").format(dtSorteggio) + ".txt"); |
|
||||||
for (String string : esito) |
|
||||||
writer.write(string + "\n"); |
|
||||||
writer.close(); |
|
||||||
} catch (IOException e) { |
|
||||||
_log.error("Errore durante il salvataggio del report " + e.getMessage()); |
|
||||||
} |
|
||||||
|
|
||||||
return esito; |
|
||||||
} |
|
||||||
|
|
||||||
private static FileEntry creaReportSorteggio(long companyId, Date dtSorteggio, List<String> contenuto) |
|
||||||
throws PortalException, SystemException { |
|
||||||
|
|
||||||
Role role = RoleLocalServiceUtil.getRole(companyId, RoleConstants.ADMINISTRATOR); |
|
||||||
long userId = UserLocalServiceUtil.getRoleUsers(role.getRoleId(), 0, 1).get(0).getUserId(); |
|
||||||
|
|
||||||
Company company = CompanyLocalServiceUtil.getCompany(companyId); |
|
||||||
Folder folderTemplate = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
|
||||||
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, "Template"); |
|
||||||
FileEntry fileEntryTemplate = DLAppLocalServiceUtil.getFileEntry(folderTemplate.getGroupId(), |
|
||||||
folderTemplate.getFolderId(), FILE_ENTRY_TEMPLATE_SORTEGGIO); |
|
||||||
|
|
||||||
Folder folderReport = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
|
||||||
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_SORTEGGIO); |
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder(contenuto.size()); |
|
||||||
for (String riga : contenuto) { |
|
||||||
sb.append(riga); |
|
||||||
} |
|
||||||
Map<String, Object> parameters = new HashMap<String, Object>(); |
|
||||||
parameters.put("html", sb.toString()); |
|
||||||
|
|
||||||
ReportDto reportDto = new ReportDto(); |
|
||||||
reportDto.setFileEntryIds(new long[] { fileEntryTemplate.getFileEntryId() }); |
|
||||||
reportDto.setFolderId(folderReport.getFolderId()); |
|
||||||
reportDto.setFileName(reportFileName(companyId, dtSorteggio)); |
|
||||||
|
|
||||||
reportDto.setHeader(""); |
|
||||||
reportDto.setHeaderHeight(1); |
|
||||||
reportDto.setFooter(""); |
|
||||||
reportDto.setFooterHeight(40); |
|
||||||
|
|
||||||
reportDto.setParameters(parameters); |
|
||||||
reportDto.setShowNumberOfPage(true); |
|
||||||
reportDto.setType(ReportConstants.ReportType.VELOCITY_TO_PDF.toString()); |
|
||||||
|
|
||||||
String resourcePath = SorteggioPraticaUtil.class.getName().replaceAll("\\w+\\.", "../") |
|
||||||
.replace(SorteggioPraticaUtil.class.getSimpleName(), "resource/asseverazioni"); |
|
||||||
reportDto.setPortalURL(SorteggioPraticaUtil.class.getResource(resourcePath).getPath()); |
|
||||||
|
|
||||||
ReportUtil.generateReport(companyId, userId, reportDto, null); |
|
||||||
|
|
||||||
return null; |
|
||||||
} |
|
||||||
|
|
||||||
private static String reportFileName(long companyId, Date dtSorteggio) { |
|
||||||
Calendar calSorteggio = DateUtils.toCalendar(dtSorteggio); |
|
||||||
String anno = String.valueOf(calSorteggio.get(Calendar.YEAR)); |
|
||||||
int settimana = calSorteggio.get(Calendar.WEEK_OF_YEAR); |
|
||||||
return reportFileName(companyId, anno, settimana); |
|
||||||
} |
|
||||||
|
|
||||||
private static String reportFileName(long companyId, String anno, int settimana) { |
|
||||||
return "Sorteggio_" + settimana + "_" + anno + "_" + companyId; |
|
||||||
} |
|
||||||
|
|
||||||
private static void invioMailSorteggio(IntPratica intPratica, DettPratica dettPratica, |
|
||||||
ServiceContext serviceContext) { |
|
||||||
try { |
|
||||||
long intPraticaId = intPratica.getIntPraticaId(); |
|
||||||
List<Soggetto> soggetti = SoggettoLocalServiceUtil.getValidByIntPratica(intPraticaId); |
|
||||||
|
|
||||||
List<String> toList = new ArrayList<String>(); |
|
||||||
for (Soggetto soggetto : soggetti) { |
|
||||||
toList.add(soggetto.getEmail()); |
|
||||||
} |
|
||||||
String[] to = toList.toArray(new String[toList.size()]); |
|
||||||
String[] cc = new String[0]; |
|
||||||
String[] ccn = new String[0]; |
|
||||||
|
|
||||||
Territorio territorio = TerritorioLocalServiceUtil.getTerritorio(intPratica.getTerritorioId()); |
|
||||||
Comune comune = ComuneLocalServiceUtil.getComune(territorio.getComuneId()); |
|
||||||
Provincia provincia = ProvinciaLocalServiceUtil.fetchByC_C(territorio.getCompanyId(), |
|
||||||
territorio.getCodiceProvincia()); |
|
||||||
String url = FascicoloURLUtil.getFascicoloFEViewURL(intPratica.getCompanyId(), intPraticaId, |
|
||||||
"/html/fascicolofe/view_fascicolo.jsp", ""); |
|
||||||
|
|
||||||
JSONObject templateVariables = JSONFactoryUtil.createJSONObject(); |
|
||||||
templateVariables.put("comune", comune.getDenominazione()); |
|
||||||
templateVariables.put("intervento", dettPratica.getDescLongIntervento()); |
|
||||||
templateVariables.put("link", url); |
|
||||||
templateVariables.put("praticaNum", intPratica.getNumeroProgetto()); |
|
||||||
templateVariables.put("provincia", provincia.getProvincia()); |
|
||||||
templateVariables.put("tipoPratica", |
|
||||||
LanguageUtil.get(LocaleUtil.ITALIAN, "tipo-pratica-" + intPratica.getTipoPratica())); |
|
||||||
|
|
||||||
MailManagerUtil.sendMailByTemplatName(intPratica.getClass().getName(), intPraticaId, |
|
||||||
"NOTIFICA-SORTEGGIO", to, cc, ccn, templateVariables, null, serviceContext); |
|
||||||
} catch (PortalException | SystemException e) { |
|
||||||
_log.error("Errore durante l'invio mail sorteggio della pratica " + intPratica.getIntPraticaId(), |
|
||||||
e); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @author Manifattura Web Group per Regione Siciliana |
|
||||||
* |
|
||||||
* @param companyId |
|
||||||
* @param pratiche |
|
||||||
* Lista di pratiche sorteggiate |
|
||||||
* @param dtSorteggio |
|
||||||
* Data del sorteggio |
|
||||||
* @throws PortalException |
|
||||||
* @throws SystemException |
|
||||||
*/ |
|
||||||
private static void saveSorteggio(long companyId, List<IntPratica> pratiche, Date dtSorteggio) |
|
||||||
throws PortalException, SystemException { |
|
||||||
|
|
||||||
long numeroEstrazione = 1; |
|
||||||
for (IntPratica pratica : pratiche) { |
|
||||||
|
|
||||||
Territorio territorio = TerritorioLocalServiceUtil.getTerritorio(pratica.getTerritorioId()); |
|
||||||
Comune comune = ComuneLocalServiceUtil.getComune(territorio.getComuneId()); |
|
||||||
Provincia provincia = ProvinciaLocalServiceUtil.fetchByC_C(territorio.getCompanyId(), |
|
||||||
comune.getCodiceProvincia()); |
|
||||||
|
|
||||||
DettPratica dettPratica = DettPraticaLocalServiceUtil.getLastCompletedByIntPratica(pratica |
|
||||||
.getIntPraticaId()); |
|
||||||
|
|
||||||
String committente = ""; |
|
||||||
List<Soggetto> soggetti = SoggettoLocalServiceUtil |
|
||||||
.findByIntPratica_TipologiaSoggetto_Aggiuntivo_Rimosso(pratica.getIntPraticaId(), |
|
||||||
TipoSoggettoUtil.COMMITTENTE, false, false); |
|
||||||
if (soggetti.size() > 0) { |
|
||||||
Soggetto soggetto = soggetti.get(0); |
|
||||||
|
|
||||||
// Bug 32771
|
|
||||||
if (Validator.isNotNull(soggetto.getNome()) && Validator.isNotNull(soggetto.getCognome())) |
|
||||||
committente = soggetto.getNome() + " " + soggetto.getCognome(); |
|
||||||
else if (Validator.isNotNull(soggetto.getDenominazione())) |
|
||||||
committente = soggetto.getDenominazione(); |
|
||||||
else |
|
||||||
committente = soggetto.getLegaleRap(); |
|
||||||
} |
|
||||||
|
|
||||||
// anno, mese, settimana della data sorteggio
|
|
||||||
Calendar calSorteggio = Calendar.getInstance(); |
|
||||||
calSorteggio.setTime(dtSorteggio); |
|
||||||
|
|
||||||
String anno = String.valueOf(calSorteggio.get(Calendar.YEAR)); |
|
||||||
String mese = String.format("%02d", calSorteggio.get(Calendar.MONTH) + 1); |
|
||||||
int settimana = calSorteggio.get(Calendar.WEEK_OF_YEAR); |
|
||||||
|
|
||||||
ServiceContext serviceContext = new ServiceContext(); |
|
||||||
serviceContext.setCompanyId(dettPratica.getCompanyId()); |
|
||||||
serviceContext.setScopeGroupId(dettPratica.getGroupId()); |
|
||||||
serviceContext.setUserId(dettPratica.getUserId()); |
|
||||||
|
|
||||||
SorteggioLocalServiceUtil.addSorteggio(pratica.getIntPraticaId(), dettPratica.getDettPraticaId(), |
|
||||||
anno, mese, settimana, dtSorteggio, "", APERTO, "", numeroEstrazione++, |
|
||||||
pratica.getNumeroProgetto(), committente, comune.getDenominazione(), |
|
||||||
provincia.getProvincia(), false, pratica.getIntPraticaId(), false, serviceContext); |
|
||||||
|
|
||||||
ControlloPratica controlloPratica = ControlloPraticaLocalServiceUtil.addControlloPratica( |
|
||||||
pratica.getGroupId(), pratica.getUserId(), pratica.getIntPraticaId(), |
|
||||||
dettPratica.getDettPraticaId(), true, serviceContext); |
|
||||||
|
|
||||||
long fileEntryIdTemplate = ConfigurazioneLocalServiceUtil.findByC_ChiaveLong( |
|
||||||
serviceContext.getCompanyId(), "conf.geniocivile.avviso.template.id.deposito.S"); |
|
||||||
|
|
||||||
AvvisoLocalServiceUtil.addAvviso(pratica.getIntPraticaId(), "Avviso di sorteggio", dtSorteggio, |
|
||||||
AvvisoUtil.TIPO_AVVISO_DIRETTO, StatoPraticaConstants.SOTTOPOSTA_A_PARERE, |
|
||||||
fileEntryIdTemplate, dettPratica.getDettPraticaId(), DettPratica.class.getName(), |
|
||||||
controlloPratica.getControlloPraticaId(), serviceContext); |
|
||||||
|
|
||||||
IntPraticaLocalServiceUtil.updateIntPraticaSorteggio(pratica.getIntPraticaId(), dtSorteggio, |
|
||||||
StatoPraticaConstants.SOTTOPOSTA_A_PARERE); |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private static void saveSorteggio(long companyId, long[] numeroEstrazione, List<Object[]> pratiche, |
|
||||||
Date dtSorteggio, boolean mesePrecedente, boolean disabled) throws Exception { |
|
||||||
|
|
||||||
for (Object[] pratica : pratiche) { |
|
||||||
|
|
||||||
long praticaId = (Long) pratica[0]; |
|
||||||
boolean esterna = (Boolean) pratica[1]; |
|
||||||
long territorioId = (Long) pratica[2]; |
|
||||||
String numeroProgetto = (String) pratica[3]; |
|
||||||
String committente = (String) pratica[4]; |
|
||||||
|
|
||||||
long dettPraticaId = 0L; |
|
||||||
long intPraticaId = 0L; |
|
||||||
|
|
||||||
Territorio territorio = TerritorioLocalServiceUtil.getTerritorio(territorioId); |
|
||||||
Comune comune = ComuneLocalServiceUtil.getComune(territorio.getComuneId()); |
|
||||||
Provincia provincia = ProvinciaLocalServiceUtil.fetchByC_C(territorio.getCompanyId(), |
|
||||||
comune.getCodiceProvincia()); |
|
||||||
if (!esterna) { |
|
||||||
IntPratica intPratica = IntPraticaLocalServiceUtil.getIntPratica(praticaId); |
|
||||||
|
|
||||||
intPraticaId = intPratica.getIntPraticaId(); |
|
||||||
|
|
||||||
DettPratica dettPratica = DettPraticaLocalServiceUtil.getLastCompletedByIntPratica(intPratica |
|
||||||
.getIntPraticaId()); |
|
||||||
dettPraticaId = dettPratica.getDettPraticaId(); |
|
||||||
List<Soggetto> soggetti = SoggettoLocalServiceUtil |
|
||||||
.findByIntPratica_TipologiaSoggetto_Aggiuntivo_Rimosso(intPratica.getIntPraticaId(), |
|
||||||
TipoSoggettoUtil.COMMITTENTE, false, false); |
|
||||||
if (soggetti.size() > 0) { |
|
||||||
// Bug 32771
|
|
||||||
if (Validator.isNotNull(soggetti.get(0).getNome()) |
|
||||||
&& Validator.isNotNull(soggetti.get(0).getCognome())) |
|
||||||
committente = soggetti.get(0).getNome() + StringPool.SPACE |
|
||||||
+ soggetti.get(0).getCognome(); |
|
||||||
else |
|
||||||
committente = Validator.isNotNull(soggetti.get(0).getDenominazione()) ? soggetti.get( |
|
||||||
0).getDenominazione() : soggetti.get(0).getLegaleRap(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// anno, mese della data sorteggio
|
|
||||||
Calendar calSorteggio = DateUtils.toCalendar(dtSorteggio); |
|
||||||
String anno = String.valueOf(calSorteggio.get(Calendar.YEAR)); |
|
||||||
String mese = StringUtils.leftPad(String.valueOf(calSorteggio.get(Calendar.MONTH) + 1), 2, '0'); |
|
||||||
int settimana = calSorteggio.get(Calendar.WEEK_OF_YEAR); |
|
||||||
|
|
||||||
ServiceContext serviceContext = new ServiceContext(); |
|
||||||
serviceContext.setCompanyId(companyId); |
|
||||||
serviceContext.setScopeGroupId(territorio.getGroupId()); |
|
||||||
serviceContext.setUserId(UserLocalServiceUtil.getDefaultUserId(companyId)); |
|
||||||
|
|
||||||
SorteggioLocalServiceUtil.addSorteggio(intPraticaId, dettPraticaId, anno, mese, settimana, |
|
||||||
dtSorteggio, StringPool.BLANK, APERTO, StringPool.BLANK, numeroEstrazione[0]++, |
|
||||||
numeroProgetto, committente, comune.getDenominazione(), provincia.getProvincia(), |
|
||||||
esterna, (!esterna ? 0L : praticaId), mesePrecedente, serviceContext); |
|
||||||
|
|
||||||
if (!esterna) { |
|
||||||
IntPraticaLocalServiceUtil.updateIntPraticaSorteggio(praticaId, dtSorteggio); |
|
||||||
} else { |
|
||||||
SorteggioLocalServiceUtil.updateDataSorteggioPraticaEsterna(praticaId, dtSorteggio); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public static Date getDateMinSorteggioAnno(Date dt) { |
|
||||||
|
|
||||||
Date[] rangeAnno = rangeSorteggioAnno(getMeseSorteggio(dt)); |
|
||||||
return rangeAnno[0]; |
|
||||||
} |
|
||||||
|
|
||||||
public static FileEntry getFileEntrySorteggio(long companyId, long groupId, Date dtSorteggio) |
|
||||||
throws PortalException, SystemException { |
|
||||||
|
|
||||||
Company company = CompanyLocalServiceUtil.getCompany(companyId); |
|
||||||
|
|
||||||
Folder folder = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
|
||||||
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_SORTEGGIO); |
|
||||||
String fileName = reportFileName(companyId, dtSorteggio); |
|
||||||
|
|
||||||
FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(groupId, folder.getFolderId(), fileName); |
|
||||||
|
|
||||||
return fileEntry; |
|
||||||
} |
|
||||||
|
|
||||||
public static FileEntry getFileEntrySorteggio(long companyId, long groupId, int settimana, String anno) |
|
||||||
throws PortalException, SystemException { |
|
||||||
|
|
||||||
Company company = CompanyLocalServiceUtil.getCompany(companyId); |
|
||||||
|
|
||||||
Folder folder = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
|
||||||
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_SORTEGGIO); |
|
||||||
String fileName = reportFileName(companyId, anno, settimana); |
|
||||||
|
|
||||||
return DLAppLocalServiceUtil.getFileEntry(groupId, folder.getFolderId(), fileName); |
|
||||||
} |
|
||||||
|
|
||||||
/* |
|
||||||
* Metodi Utilità |
|
||||||
*/ |
|
||||||
|
|
||||||
private static void generateReport(long companyId, Date dtSorteggio, long gropuId) throws Exception { |
|
||||||
|
|
||||||
Role role = RoleLocalServiceUtil.getRole(companyId, RoleConstants.ADMINISTRATOR); |
|
||||||
long userId = UserLocalServiceUtil.getRoleUsers(role.getRoleId(), 0, 1).get(0).getUserId(); |
|
||||||
|
|
||||||
// anno, mese della data sorteggio
|
|
||||||
Calendar calSorteggio = DateUtils.toCalendar(dtSorteggio); |
|
||||||
String anno = String.valueOf(calSorteggio.get(Calendar.YEAR)); |
|
||||||
String mese = StringUtils.leftPad(String.valueOf(calSorteggio.get(Calendar.MONTH) + 1), 2, '0'); |
|
||||||
int settimana = calSorteggio.get(Calendar.WEEK_OF_YEAR); |
|
||||||
|
|
||||||
List<Sorteggio> sorteggios = new ArrayList<Sorteggio>( |
|
||||||
SorteggioLocalServiceUtil.findByGroupId_Anno_Mese_Settimana(gropuId, anno, mese, settimana)); |
|
||||||
|
|
||||||
List<ReportSorteggioBean> reportSorteggioBeans = new ArrayList<ReportSorteggioBean>(sorteggios.size()); |
|
||||||
for (Sorteggio sorteggio : sorteggios) { |
|
||||||
ReportSorteggioBean bean = ReportSorteggioBeanBuilder.build(sorteggio); |
|
||||||
reportSorteggioBeans.add(bean); |
|
||||||
} |
|
||||||
|
|
||||||
Collections.sort(reportSorteggioBeans, new Comparator<ReportSorteggioBean>() { |
|
||||||
|
|
||||||
@Override |
|
||||||
public int compare(ReportSorteggioBean b1, ReportSorteggioBean b2) { |
|
||||||
|
|
||||||
int compare = new Long(b1.getNumeroEstrazione()).compareTo(new Long(b2.getNumeroEstrazione())); |
|
||||||
int compareProvincia = b1.getProvincia().compareTo(b2.getProvincia()); |
|
||||||
|
|
||||||
if (compareProvincia == 0) { |
|
||||||
if (compare == 0) { |
|
||||||
if (Validator.isNull(b1.getFascia())) { |
|
||||||
return -1; |
|
||||||
} |
|
||||||
compare = b1.getFascia().compareTo(b2.getFascia()); |
|
||||||
if (compare == 0) { |
|
||||||
return new Long(b1.getPratica()).compareTo(new Long(b2.getPratica())); |
|
||||||
} |
|
||||||
return compare; |
|
||||||
} |
|
||||||
return compare; |
|
||||||
} |
|
||||||
|
|
||||||
return compareProvincia; |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
// vuoto per forzare visualizzazione
|
|
||||||
if (reportSorteggioBeans.isEmpty()) { |
|
||||||
reportSorteggioBeans.add(new ReportSorteggioBean()); |
|
||||||
} |
|
||||||
Company company = CompanyLocalServiceUtil.getCompany(companyId); |
|
||||||
Folder folderTemplate = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
|
||||||
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_TEMPLATE_SORTEGGIO); |
|
||||||
FileEntry fileEntryTemplate = DLAppLocalServiceUtil.getFileEntry(folderTemplate.getGroupId(), |
|
||||||
folderTemplate.getFolderId(), FILE_ENTRY_TEMPLATE_SORTEGGIO); |
|
||||||
|
|
||||||
String fileName = MessageFormat.format(FILE_ENTRY_SORTEGGIO, mese, anno, gropuId); |
|
||||||
|
|
||||||
Folder folder = null; |
|
||||||
try { |
|
||||||
folder = DLAppLocalServiceUtil.getFolder(company.getGroupId(), |
|
||||||
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_SORTEGGIO); |
|
||||||
} catch (PortalException e) { |
|
||||||
folder = DLAppLocalServiceUtil.addFolder(userId, company.getGroupId(), |
|
||||||
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID, FOLDER_SORTEGGIO, StringPool.BLANK, |
|
||||||
new ServiceContext()); |
|
||||||
} |
|
||||||
|
|
||||||
Map<String, Object> paramaters = new HashMap<String, Object>(); |
|
||||||
|
|
||||||
paramaters.put("DATA_SORTEGGIO", |
|
||||||
new SimpleDateFormat("MMMM yyyy", java.util.Locale.ITALY).format(dtSorteggio)); |
|
||||||
|
|
||||||
int fasciaAMese = 0; |
|
||||||
int fasciaAMesiPrec = 0; |
|
||||||
int fasciaBMese = 0; |
|
||||||
int fasciaBMesiPrec = 0; |
|
||||||
int fasciaCMese = 0; |
|
||||||
int fasciaCMesiPrec = 0; |
|
||||||
|
|
||||||
// Task 32561
|
|
||||||
int zona4Mese = 0; |
|
||||||
int zona4MesePrec = 0; |
|
||||||
|
|
||||||
for (ReportSorteggioBean bean : reportSorteggioBeans) { |
|
||||||
if (Validator.isNotNull(bean.getFascia())) { |
|
||||||
if (bean.getFascia().equals(Constants.FASCIA_A)) { |
|
||||||
if (bean.getFase().equals("1")) { |
|
||||||
fasciaAMese++; |
|
||||||
} else if (bean.getFase().equals("2")) { |
|
||||||
fasciaAMesiPrec++; |
|
||||||
} |
|
||||||
} else if (bean.getFascia().equals(Constants.FASCIA_B)) { |
|
||||||
if (bean.getFase().equals("1")) { |
|
||||||
fasciaBMese++; |
|
||||||
} else if (bean.getFase().equals("2")) { |
|
||||||
fasciaBMesiPrec++; |
|
||||||
} |
|
||||||
} else if (bean.getFascia().equals(Constants.FASCIA_C)) { |
|
||||||
if (bean.getFase().equals("1")) { |
|
||||||
fasciaCMese++; |
|
||||||
} else if (bean.getFase().equals("2")) { |
|
||||||
fasciaCMesiPrec++; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// Task 32561
|
|
||||||
if (Validator.isNotNull(bean.getZona())) { |
|
||||||
if (("livorno".equalsIgnoreCase(bean.getProvincia()) || "grosseto".equalsIgnoreCase(bean |
|
||||||
.getProvincia())) && bean.getZona().equals(Constants.ZONA_4)) { |
|
||||||
if (bean.getFase().equals("1")) { |
|
||||||
zona4Mese++; |
|
||||||
} else if (bean.getFase().equals("2")) { |
|
||||||
zona4MesePrec++; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
paramaters.put("FASCIA_A_MESE", fasciaAMese); |
|
||||||
paramaters.put("FASCIA_A_MESI_PREC", fasciaAMesiPrec); |
|
||||||
paramaters.put("FASCIA_B_MESE", fasciaBMese); |
|
||||||
paramaters.put("FASCIA_B_MESI_PREC", fasciaBMesiPrec); |
|
||||||
paramaters.put("FASCIA_C_MESE", fasciaCMese); |
|
||||||
paramaters.put("FASCIA_C_MESI_PREC", fasciaCMesiPrec); |
|
||||||
|
|
||||||
// Task 32561
|
|
||||||
paramaters.put("ZONA_4_MESE", zona4Mese); |
|
||||||
paramaters.put("ZONA_4_MESE_PREC", zona4MesePrec); |
|
||||||
|
|
||||||
// ServiceContext serviceContext = new ServiceContext();
|
|
||||||
// serviceContext.setCompanyId(companyId);
|
|
||||||
// serviceContext.setScopeGroupId(groupId);
|
|
||||||
// serviceContext.setUserId(userId);
|
|
||||||
|
|
||||||
ReportDto reportDto = new ReportDto(); |
|
||||||
reportDto.setFileEntryIds(new long[] { fileEntryTemplate.getFileEntryId() }); |
|
||||||
reportDto.setFolderId(folder.getFolderId()); |
|
||||||
reportDto.setFileName(fileName); |
|
||||||
reportDto.setParameters(paramaters); |
|
||||||
// reportDto.setDataSource(reportSorteggioBeans);
|
|
||||||
reportDto.setShowNumberOfPage(true); |
|
||||||
reportDto.setType(ReportConstants.ReportType.JRXML_TO_PDF.toString()); |
|
||||||
|
|
||||||
ReportResultDto result = ReportUtil |
|
||||||
.generateReport(companyId, userId, reportDto, reportSorteggioBeans); |
|
||||||
long idFileEntry = result.getFileEntryIds()[0]; |
|
||||||
|
|
||||||
/* |
|
||||||
* Message messageReport = new Message(); |
|
||||||
* messageReport.put(ReportConstants.FILE_ENTRY_ID_TEMPLATE, |
|
||||||
* fileEntryTemplate.getFileEntryId()); |
|
||||||
* messageReport.put(ReportConstants.FOLDER_ID_REPORT, |
|
||||||
* folder.getFolderId()); messageReport.put(ReportConstants.REPORT_NAME, |
|
||||||
* fileName); messageReport.put(ReportConstants.SERVICE_CONTEXT, |
|
||||||
* serviceContext); messageReport.put(ReportConstants.REPORT_PARAMETERS, |
|
||||||
* paramaters); messageReport.put(ReportConstants.REPORT_DATASOURCE, |
|
||||||
* reportSorteggioBeans); long idFileEntry = (Long) |
|
||||||
* MessageBusUtil.sendSynchronousMessage(ReportDestinationNames.SYNC, |
|
||||||
* messageReport, 1); |
|
||||||
*/ |
|
||||||
|
|
||||||
if (Validator.isNull(idFileEntry)) { |
|
||||||
throw new NoSuchFileException(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
private static String getMeseSorteggio(Date dtSorteggio) { |
|
||||||
|
|
||||||
Calendar calendar = getSorteggio(dtSorteggio); |
|
||||||
return StringUtils.leftPad(String.valueOf(calendar.get(Calendar.MONTH) + 1), 2, '0'); |
|
||||||
} |
|
||||||
|
|
||||||
private static Calendar getSorteggio(Date dtSorteggio) { |
|
||||||
|
|
||||||
Calendar calendar = Calendar.getInstance(); |
|
||||||
calendar.setTime(dtSorteggio); |
|
||||||
calendar.add(Calendar.MONTH, -1); |
|
||||||
return calendar; |
|
||||||
} |
|
||||||
|
|
||||||
private static Date[] rangeSorteggioAnno(String mese) { |
|
||||||
|
|
||||||
// min
|
|
||||||
Calendar calMin = getCalendarNoTimeFirstDay(); |
|
||||||
if (mese.equalsIgnoreCase("12")) { |
|
||||||
calMin.add(Calendar.YEAR, -1); |
|
||||||
} |
|
||||||
calMin.set(Calendar.MONTH, (Integer.parseInt(mese) - 1)); |
|
||||||
calMin.add(Calendar.MONTH, -11); |
|
||||||
// max
|
|
||||||
Calendar calMax = getCalendarNoTimeFirstDay(); |
|
||||||
if (mese.equalsIgnoreCase("12")) { |
|
||||||
calMax.add(Calendar.YEAR, -1); |
|
||||||
} |
|
||||||
calMax.set(Calendar.MONTH, (Integer.parseInt(mese) - 1)); |
|
||||||
return new Date[] { calMin.getTime(), calMax.getTime() }; |
|
||||||
} |
|
||||||
|
|
||||||
private static Calendar getCalendarNoTimeFirstDay() { |
|
||||||
|
|
||||||
Calendar cal = Calendar.getInstance(); |
|
||||||
cal.set(Calendar.DATE, 1); |
|
||||||
cal.set(Calendar.HOUR_OF_DAY, 0); |
|
||||||
cal.set(Calendar.MINUTE, 0); |
|
||||||
cal.set(Calendar.SECOND, 0); |
|
||||||
cal.set(Calendar.MILLISECOND, 0); |
|
||||||
return cal; |
|
||||||
} |
|
||||||
} |
|
Caricamento…
Reference in new issue