diff --git a/fe-piattaforma/public/assets/errors/errors.json b/fe-piattaforma/public/assets/errors/errors.json index 82d8e4cae..f1d682d66 100644 --- a/fe-piattaforma/public/assets/errors/errors.json +++ b/fe-piattaforma/public/assets/errors/errors.json @@ -459,6 +459,10 @@ "A06": { "titolo": "ERRORE DATA SERVIZIO", "descrizione": "Inserisci una data compresa fra le date di inizio e fine progetto" + }, + "CM01" : { + "titolo": "IMPOSSIBILE AVVIARE INSERIMENTO DATI", + "descrizione": "E' già in corso un inserimento dati" } } } diff --git a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/CittadinoEntity.java b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/CittadinoEntity.java index c097a73ee..f0e019b9b 100644 --- a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/CittadinoEntity.java +++ b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/CittadinoEntity.java @@ -68,4 +68,7 @@ public class CittadinoEntity implements Serializable { @Column(name = "PROVINCIA_DI_DOMICILIO") private String provinciaDiDomicilio; + + @Column(name = "COD_INSERIMENTO") + private String codInserimento; } \ No newline at end of file diff --git a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/QuestionarioCompilatoEntity.java b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/QuestionarioCompilatoEntity.java index 53989fdb3..64e48b95c 100644 --- a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/QuestionarioCompilatoEntity.java +++ b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/QuestionarioCompilatoEntity.java @@ -56,4 +56,7 @@ public class QuestionarioCompilatoEntity implements Serializable { @LastModifiedDate @Column(name = "DATA_ORA_AGGIORNAMENTO") private Date dataOraAggiornamento; + + @Column(name = "COD_INSERIMENTO") + private String codInserimento; } \ No newline at end of file diff --git a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/RegistroAttivitaEntity.java b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/RegistroAttivitaEntity.java index 97077eda8..77e66b1e1 100644 --- a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/RegistroAttivitaEntity.java +++ b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/RegistroAttivitaEntity.java @@ -28,9 +28,11 @@ public class RegistroAttivitaEntity { private Long id; @NotEmpty private String operatore; - @CreatedDate @JsonFormat(pattern = "dd/MM/yyyy HH:mm:ss", timezone = "Europe/Rome") private Date dataFineInserimento; + @CreatedDate + @JsonFormat(pattern = "dd/MM/yyyy HH:mm:ss", timezone = "Europe/Rome") + private Date dataInizioInserimento; @JsonIgnore private String codiceFiscale; @NotNull diff --git a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/ServizioEntity.java b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/ServizioEntity.java index 8e86a9540..267341fc2 100644 --- a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/ServizioEntity.java +++ b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/ServizioEntity.java @@ -71,4 +71,7 @@ public class ServizioEntity implements Serializable { @LastModifiedDate @Column(name = "DATA_ORA_AGGIORNAMENTO") private Date dataOraAggiornamento; + + @Column(name = "COD_INSERIMENTO") + private String codInserimento; } \ No newline at end of file diff --git a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/ServizioXCittadinoEntity.java b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/ServizioXCittadinoEntity.java index 12ee01725..5b8c77a95 100644 --- a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/ServizioXCittadinoEntity.java +++ b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/entity/ServizioXCittadinoEntity.java @@ -36,4 +36,7 @@ public class ServizioXCittadinoEntity implements Serializable { @LastModifiedDate @Column(name = "DATA_ORA_AGGIORNAMENTO") private Date dataOraAggiornamento; + + @Column(name = "COD_INSERIMENTO") + private String codInserimento; } \ No newline at end of file diff --git a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/exception/CodiceErroreEnum.java b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/exception/CodiceErroreEnum.java index c86d32166..1e2795cd7 100644 --- a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/exception/CodiceErroreEnum.java +++ b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/exception/CodiceErroreEnum.java @@ -155,6 +155,8 @@ public enum CodiceErroreEnum { ,A04("Sezionario q4 completamente mancante, almeno una risposta deve essere selezionata") ,A05("La sezione q4 e' stata compilata ma nessuna risposta e' stata selezionata") ,A06("La data del servizio non rientra all’interno delle date di progetto") + + ,CM01("E' già in corso un inserimento dati") ; private String descrizioneErrore; diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/exception/ValidationException.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/exception/ValidationException.java new file mode 100644 index 000000000..31ad43df1 --- /dev/null +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/exception/ValidationException.java @@ -0,0 +1,25 @@ +package it.pa.repdgt.surveymgmt.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +import it.pa.repdgt.shared.exception.BaseException; +import it.pa.repdgt.shared.exception.CodiceErroreEnum; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR) +public class ValidationException extends BaseException { + + public ValidationException(String messageException, Exception ex, CodiceErroreEnum codiceErroreEnum) { + super(messageException, ex); + this.codiceErroreEnum = codiceErroreEnum; + } + + public ValidationException(String messageException, CodiceErroreEnum codiceErroreEnum) { + super(messageException, codiceErroreEnum); + } + +} diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/repository/RegistroAttivitaRepository.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/repository/RegistroAttivitaRepository.java index a2cfebdb6..3114b852a 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/repository/RegistroAttivitaRepository.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/repository/RegistroAttivitaRepository.java @@ -8,6 +8,8 @@ import org.springframework.stereotype.Repository; import java.util.Optional; +import java.util.List; + @Repository public interface RegistroAttivitaRepository extends JpaRepository { @@ -26,4 +28,7 @@ Page findAllByCodiceFiscaleAndJobStatus(Pageable pageabl Optional findByJobUUIDAndJobStatus(String jobUUID, JobStatusEnum success); Optional findByJobUUID(String jobUUID); + + List findByIdEnteAndIdProgettoAndJobStatus(Long idEnte, Long idProgetto, + JobStatusEnum jobStatusEnum); } diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/request/QuestionarioCompilatoRequest.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/request/QuestionarioCompilatoRequest.java index dfcc79965..7cd8da668 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/request/QuestionarioCompilatoRequest.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/request/QuestionarioCompilatoRequest.java @@ -38,4 +38,6 @@ public class QuestionarioCompilatoRequest extends SceltaProfiloParam implements private String titoloDiStudioDaAggiornare; private String occupazioneDaAggiornare; private String cittadinanzaDaAggiornare; + + private String codInserimento; } \ No newline at end of file diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/request/ServizioRequest.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/request/ServizioRequest.java index c78f3ad56..55d7c743a 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/request/ServizioRequest.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/request/ServizioRequest.java @@ -55,4 +55,7 @@ public class ServizioRequest extends SceltaProfiloParam implements Serializable @NotBlank @JsonString private String sezioneQuestionarioCompilatoQ3; + + @JsonProperty(value = "codInserimento") + private String codInserimento; } \ No newline at end of file diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/restapi/ImportMassivoCSVRestApi.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/restapi/ImportMassivoCSVRestApi.java index d6d1e20c4..d4446acad 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/restapi/ImportMassivoCSVRestApi.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/restapi/ImportMassivoCSVRestApi.java @@ -23,6 +23,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.List; import java.util.Set; import java.util.UUID; @@ -40,6 +41,12 @@ public ResponseEntity importCsvData(@RequestBody ImportCsvInputData inpu String csvRequestString = decompressGzip(inputData.getFileData()); ElaboratoCSVRequest csvRequest = objectMapper.readValue(csvRequestString, ElaboratoCSVRequest.class); String uuid = UUID.randomUUID().toString(); + List servizi = !csvRequest.getServiziValidati().isEmpty() + ? csvRequest.getServiziValidati() + : csvRequest.getServiziScartati(); + Long idEnte = servizi.get(0).getNuovoCittadinoServizioRequest().getIdEnte(); + Long idProgetto = servizi.get(0).getNuovoCittadinoServizioRequest().getIdProgetto(); + importMassivoCSVService.checkPreliminareCaricamentoMassivo(idEnte, idProgetto); for (int i = csvRequest.getServiziValidati().size() - 1; i >= 0; i--) { ServiziElaboratiDTO servizioValidato = csvRequest.getServiziValidati().get(i); if (valida(servizioValidato)) { diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/CittadiniServizioService.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/CittadiniServizioService.java index 5e027790c..2803d8815 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/CittadiniServizioService.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/CittadiniServizioService.java @@ -291,7 +291,7 @@ public CittadinoEntity creaNuovoCittadino( cittadino.setDataOraAggiornamento(new Date()); cittadino = cittadinoRepository.save(cittadino); // associo il cittadino al servizio - this.associaCittadinoAServizio(idServizio, cittadino); + this.associaCittadinoAServizio(idServizio, cittadino, null); // recupero il servizio ServizioEntity servizioDBFetch = servizioSqlService.getServizioById(idServizio); @@ -309,7 +309,7 @@ public CittadinoEntity creaNuovoCittadino( @LogExecutionTime public NuovoCittadinoDTO creaNuovoCittadinoImportCsv( @NotNull final Long idServizio, - @NotNull final NuovoCittadinoServizioRequest nuovoCittadinoRequest) { + @NotNull final NuovoCittadinoServizioRequest nuovoCittadinoRequest, String idRegistroAttivita) { String codiceFiscaleDecrypted; boolean nuovoCittadino = true; // Verifico se il facilitatore è il creatore di quel servizio @@ -362,9 +362,10 @@ public NuovoCittadinoDTO creaNuovoCittadinoImportCsv( throw new CittadinoException(messaggioErrore, CodiceErroreEnum.U23); } cittadino.setDataOraAggiornamento(new Date()); + cittadino.setCodInserimento(idRegistroAttivita); cittadino = cittadinoRepository.save(cittadino); // associo il cittadino al servizio - this.associaCittadinoAServizio(idServizio, cittadino); + this.associaCittadinoAServizio(idServizio, cittadino, idRegistroAttivita); // recupero il servizio ServizioEntity servizioDBFetch = servizioSqlService.getServizioById(idServizio); @@ -450,12 +451,14 @@ public boolean esisteCittadinoByIdServizioAndCodiceFiscale(@NotNull final Long i @LogMethod @LogExecutionTime - public void associaCittadinoAServizio(@NotNull final Long idServizio, @NotNull final CittadinoEntity cittadino) { + public void associaCittadinoAServizio(@NotNull final Long idServizio, @NotNull final CittadinoEntity cittadino, String idRegistroAttivita) { ServizioXCittadinoEntity servizioXCittadino = new ServizioXCittadinoEntity(); ServizioCittadinoKey key = new ServizioCittadinoKey(cittadino.getId(), idServizio); servizioXCittadino.setId(key); servizioXCittadino.setDataOraAggiornamento(new Date()); servizioXCittadino.setDataOraCreazione(new Date()); + if(idRegistroAttivita != null) + servizioXCittadino.setCodInserimento(idRegistroAttivita); servizioXCittadinoRepository.save(servizioXCittadino); } @@ -768,7 +771,7 @@ public void inserisciCittadino(CittadinoEntity cittadino, Long idServizio) { cittadino = cittadinoRepository.save(cittadino); // associo il cittadino al servizio - this.associaCittadinoAServizio(idServizio, cittadino); + this.associaCittadinoAServizio(idServizio, cittadino, null); // recupero il servizio ServizioEntity servizioDBFetch = servizioSqlService.getServizioById(idServizio); diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ImportMassivoCSVService.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ImportMassivoCSVService.java index ac312b3bc..cd362ff41 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ImportMassivoCSVService.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ImportMassivoCSVService.java @@ -5,6 +5,7 @@ import it.pa.repdgt.shared.entity.*; import it.pa.repdgt.shared.entity.key.EnteSedeProgettoFacilitatoreKey; import it.pa.repdgt.shared.entityenum.JobStatusEnum; +import it.pa.repdgt.shared.exception.BaseException; import it.pa.repdgt.shared.exception.CodiceErroreEnum; import it.pa.repdgt.surveymgmt.collection.SezioneQ3Collection; import it.pa.repdgt.surveymgmt.components.ServiziElaboratiCsvWriter; @@ -17,6 +18,7 @@ import it.pa.repdgt.surveymgmt.exception.QuestionarioCompilatoException; import it.pa.repdgt.surveymgmt.exception.ResourceNotFoundException; import it.pa.repdgt.surveymgmt.exception.ServizioException; +import it.pa.repdgt.surveymgmt.exception.ValidationException; import it.pa.repdgt.surveymgmt.model.ElaboratoCSVRequest; import it.pa.repdgt.surveymgmt.model.ElaboratoCSVResponse; import it.pa.repdgt.surveymgmt.mongo.repository.SezioneQ3Respository; @@ -27,6 +29,8 @@ import it.pa.repdgt.surveymgmt.util.CSVMapUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; + +import org.apache.commons.collections4.CollectionUtils; import org.json.JSONArray; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; @@ -83,20 +87,47 @@ public void process(ElaboratoCSVRequest csvRequest, String uuid) throws IOExcept String cfUtenteLoggato = servizi != null && servizi.size() > 0 ? servizi.get(0).getServizioRequest().getCfUtenteLoggato() : null; - ElaboratoCSVResponse response = buildResponse(serviziValidati, serviziScartati, UUID); - RegistroAttivitaEntity registroAttivitaEntity = faseIntermezzoSalvataggioRegistroAttivita(UUID, csvRequest, - cfUtenteLoggato); + + Long idEnte = servizi.get(0).getNuovoCittadinoServizioRequest().getIdEnte(); + Long idProgetto = servizi.get(0).getNuovoCittadinoServizioRequest().getIdProgetto(); + + RegistroAttivitaEntity registroAttivitaEntity = faseInizializzazioneSalvataggioRegistroAttivita(UUID, + cfUtenteLoggato, idEnte, idProgetto); + try { - uploadFile(response, registroAttivitaEntity.getId()); - } catch (IOException e) { - log.error(e.getMessage()); - registroAttivitaEntity.setJobStatus(JobStatusEnum.FAIL_S3_UPLOAD); - registroAttivitaEntity.setNote("Upload del file su s3 Fallito"); + ElaboratoCSVResponse response = buildResponse(serviziValidati, serviziScartati, UUID, + registroAttivitaEntity); + // registroAttivitaEntity = faseIntermezzoSalvataggioRegistroAttivita(UUID, + // csvRequest, + // cfUtenteLoggato); + try { + uploadFile(response, registroAttivitaEntity.getId()); + } catch (IOException e) { + log.error(e.getMessage()); + registroAttivitaEntity.setJobStatus(JobStatusEnum.FAIL_S3_UPLOAD); + registroAttivitaEntity.setNote("Upload del file su s3 Fallito"); + registroAttivitaRepository.save(registroAttivitaEntity); + return; + } + aggiornaRegistroAttivita(totaleRighe, serviziScartati.size(), serviziValidati.size(), + registroAttivitaEntity, + response.getResponse(), response.getFileName()); + } catch (Exception e) { + registroAttivitaEntity.setJobStatus(JobStatusEnum.GENERIC_FAIL); + registroAttivitaEntity.setDataFineInserimento(new Date()); registroAttivitaRepository.save(registroAttivitaEntity); - return; + log.info("Errore generico durante l'elaborazione del file, id RegistroAttivitaEntity: {}", registroAttivitaEntity.getId()); + e.printStackTrace(); + } + } + + public void checkPreliminareCaricamentoMassivo(Long idEnte, Long idProgetto) { + List registroAttivita = registroAttivitaRepository + .findByIdEnteAndIdProgettoAndJobStatus(idEnte, idProgetto, JobStatusEnum.IN_PROGRESS); + if (CollectionUtils.isNotEmpty(registroAttivita)) { + log.info("E' già in corso un caricamento dati: idEnte {} - idProgetto {}", idEnte, idProgetto); + throw new ValidationException("E' già in corso un caricamento dati", CodiceErroreEnum.CM01); } - aggiornaRegistroAttivita(totaleRighe, serviziScartati.size(), serviziValidati.size(), registroAttivitaEntity, - response.getResponse(), response.getFileName()); } private void aggiornaRegistroAttivita(int totaleRighe, int numeroScartati, int numeroValidati, @@ -110,6 +141,7 @@ private void aggiornaRegistroAttivita(int totaleRighe, int numeroScartati, int n registroAttivitaEntity.setServiziAcquisiti(response.getServiziAggiunti()); registroAttivitaEntity.setFileName(fileName); registroAttivitaEntity.setJobStatus(JobStatusEnum.SUCCESS); + registroAttivitaEntity.setDataFineInserimento(new Date()); registroAttivitaService.saveRegistroAttivita(registroAttivitaEntity); } @@ -117,20 +149,19 @@ private String replaceUUID(String uuid) { return uuid.replaceAll("-", ""); } - private RegistroAttivitaEntity faseIntermezzoSalvataggioRegistroAttivita(String uuid, - ElaboratoCSVRequest elaboratoCSVRequest, String cfUtenteLoggato) { - List servizi = !elaboratoCSVRequest.getServiziValidati().isEmpty() - ? elaboratoCSVRequest.getServiziValidati() - : elaboratoCSVRequest.getServiziScartati(); + private RegistroAttivitaEntity faseInizializzazioneSalvataggioRegistroAttivita(String uuid, + String cfUtenteLoggato, Long idEnte, Long idProgetto) { + RegistroAttivitaEntity registroAttivita = RegistroAttivitaEntity.builder() + .jobStatus(JobStatusEnum.IN_PROGRESS) .operatore(cfUtenteLoggato) .totaleRigheFile(0) .righeScartate(0) .serviziAcquisiti(0) .cittadiniAggiunti(0) .rilevazioneDiEsperienzaCompilate(0) - .idEnte(servizi.get(0).getNuovoCittadinoServizioRequest().getIdEnte()) - .idProgetto(servizi.get(0).getNuovoCittadinoServizioRequest().getIdProgetto()) + .idEnte(idEnte) + .idProgetto(idProgetto) .jobUUID(uuid) .jobStatus(JobStatusEnum.IN_PROGRESS) .build(); @@ -139,7 +170,7 @@ private RegistroAttivitaEntity faseIntermezzoSalvataggioRegistroAttivita(String @Transactional public ElaboratoCSVResponse buildResponse(List serviziValidati, - List serviziScartati, String uuid) { + List serviziScartati, String uuid, RegistroAttivitaEntity registroAttivitaEntity) { Long idServizio = null; Integer serviziAggiunti = 0; Integer cittadiniAggiunti = 0; @@ -185,9 +216,11 @@ public ElaboratoCSVResponse buildResponse(List serviziValid servizioElaborato.getServizioRequest(), enteSedeProgettoFacilitatore.getId()); log.info("-XXX- Dati che sto per confrontare: {} -XXX-", String.join(" - ", - Arrays.asList(servizioElaborato.getCampiAggiuntiviCSV().getDescrizioneDettagliServizio(), + Arrays.asList( + servizioElaborato.getCampiAggiuntiviCSV().getDescrizioneDettagliServizio(), servizioElaborato.getCampiAggiuntiviCSV().getAmbitoServiziDigitaliTrattati(), - servizioElaborato.getCampiAggiuntiviCSV().getCompetenzeTrattateSecondoLivello()))); + servizioElaborato.getCampiAggiuntiviCSV() + .getCompetenzeTrattateSecondoLivello()))); for (ServizioEntity servizioRecuperato : listaServizi) { servizioOpt = Optional.ofNullable(servizioRecuperato); Optional optSezioneQ3Collection = sezioneQ3Respository @@ -238,7 +271,8 @@ public ElaboratoCSVResponse buildResponse(List serviziValid questionarioCompilatoRequest.setCodiceFiscaleDaAggiornare(utenteRecuperato.getCodiceFiscale()); questionarioCompilatoRequest.setIdEnte(servizioRequest.getIdEnteServizio()); questionarioCompilatoRequest.setIdProgetto(servizioRequest.getIdProgetto()); - Optional progettoEntity = progettoRepository.findById(servizioRequest.getIdProgetto()); + Optional progettoEntity = progettoRepository + .findById(servizioRequest.getIdProgetto()); if (progettoEntity.isPresent()) { questionarioCompilatoRequest.setIdProgramma(progettoEntity.get().getProgramma().getId()); } else { @@ -248,9 +282,12 @@ public ElaboratoCSVResponse buildResponse(List serviziValid if (!servizioRequest.getDataServizio().after(progettoEntityData.getDataFineProgetto()) && !servizioRequest.getDataServizio().before(progettoEntityData.getDataInizioProgetto())) { servizioElaborato.setQuestionarioCompilatoRequest(questionarioCompilatoRequest); - ServizioEntity servizioEntity = salvaServizio(servizioOpt, servizioElaborato.getServizioRequest()); + + ServizioEntity servizioEntity = salvaServizio(servizioOpt, + servizioElaborato.getServizioRequest(), registroAttivitaEntity.getId().toString()); //QUA if (nuovoAggiunto) { - ServiziAggiuntiDTO servizioAggiunto = new ServiziAggiuntiDTO(servizioElaborato, servizioEntity); + ServiziAggiuntiDTO servizioAggiunto = new ServiziAggiuntiDTO(servizioElaborato, + servizioEntity); serviziAggiuntiList.add(servizioAggiunto); log.info("-XXX- Servizio aggiunto alla lista {} -XXX-", servizioAggiunto.getServizioEntity().getId()); @@ -322,7 +359,7 @@ public ElaboratoCSVResponse buildResponse(List serviziValid idQuestionario = null; nuovoCittadinoDTO = null; nuovoCittadinoDTO = cittadiniServizioService.creaNuovoCittadinoImportCsv(idServizio, - servizioElaborato.getNuovoCittadinoServizioRequest()); + servizioElaborato.getNuovoCittadinoServizioRequest(), registroAttivitaEntity.getId().toString()); //QUA OK idQuestionario = nuovoCittadinoDTO.getCittadinoEntity().getQuestionarioCompilato().get(0).getId(); } catch (CittadinoException | ServizioException e) { if (cittadiniAggiunti > 0) @@ -347,7 +384,8 @@ public ElaboratoCSVResponse buildResponse(List serviziValid } catch (Exception exc) { log.info("-XXX- Exception eccezione bonifica record cittadino: {} -XXX-", exc.getMessage()); exc.printStackTrace(); - log.info("-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", + log.info( + "-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", idServizio, nuovoCittadinoDTO != null && nuovoCittadinoDTO.getCittadinoEntity() != null ? nuovoCittadinoDTO.getCittadinoEntity().getId() @@ -377,7 +415,8 @@ public ElaboratoCSVResponse buildResponse(List serviziValid } catch (Exception exc) { log.info("-XXX- Exception eccezione bonifica record cittadino: {} -XXX-", exc.getMessage()); exc.printStackTrace(); - log.info("-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", + log.info( + "-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", idServizio, nuovoCittadinoDTO != null && nuovoCittadinoDTO.getCittadinoEntity() != null ? nuovoCittadinoDTO.getCittadinoEntity().getId() @@ -407,7 +446,8 @@ public ElaboratoCSVResponse buildResponse(List serviziValid } catch (Exception exc) { log.info("-XXX- Exception eccezione bonifica record cittadino: {} -XXX-", exc.getMessage()); exc.printStackTrace(); - log.info("-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", + log.info( + "-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", idServizio, nuovoCittadinoDTO != null && nuovoCittadinoDTO.getCittadinoEntity() != null ? nuovoCittadinoDTO.getCittadinoEntity().getId() @@ -437,7 +477,8 @@ public ElaboratoCSVResponse buildResponse(List serviziValid } catch (Exception exc) { log.info("-XXX- Exception eccezione bonifica record cittadino: {} -XXX-", exc.getMessage()); exc.printStackTrace(); - log.info("-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", + log.info( + "-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", idServizio, nuovoCittadinoDTO != null && nuovoCittadinoDTO.getCittadinoEntity() != null ? nuovoCittadinoDTO.getCittadinoEntity().getId() @@ -468,7 +509,8 @@ public ElaboratoCSVResponse buildResponse(List serviziValid } catch (Exception exc) { log.info("-XXX- Exception eccezione bonifica record cittadino: {} -XXX-", exc.getMessage()); exc.printStackTrace(); - log.info("-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", + log.info( + "-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", idServizio, nuovoCittadinoDTO != null && nuovoCittadinoDTO.getCittadinoEntity() != null ? nuovoCittadinoDTO.getCittadinoEntity().getId() @@ -477,9 +519,12 @@ public ElaboratoCSVResponse buildResponse(List serviziValid continue; } try { + QuestionarioCompilatoRequest questionarioCompilatoRequest = servizioElaborato + .getQuestionarioCompilatoRequest(); + questionarioCompilatoRequest.setCodInserimento(registroAttivitaEntity.getId().toString()); questionariAggiunti++; - servizioCittadinoRestApi.compilaQuestionario(idQuestionario, - servizioElaborato.getQuestionarioCompilatoRequest()); + servizioCittadinoRestApi.compilaQuestionario(idQuestionario, //QUA + questionarioCompilatoRequest); } catch (CittadinoException | ServizioException | QuestionarioCompilatoException e) { if (questionariAggiunti > 0) questionariAggiunti--; @@ -509,7 +554,8 @@ public ElaboratoCSVResponse buildResponse(List serviziValid } catch (Exception exc) { log.info("-XXX- Exception eccezione bonifica record questionario: {} -XXX-", exc.getMessage()); exc.printStackTrace(); - log.info("-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", + log.info( + "-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", idServizio, nuovoCittadinoDTO != null && nuovoCittadinoDTO.getCittadinoEntity() != null ? nuovoCittadinoDTO.getCittadinoEntity().getId() @@ -544,7 +590,8 @@ public ElaboratoCSVResponse buildResponse(List serviziValid } catch (Exception exc) { log.info("-XXX- Exception eccezione bonifica record questionario: {} -XXX-", exc.getMessage()); exc.printStackTrace(); - log.info("-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", + log.info( + "-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", idServizio, nuovoCittadinoDTO != null && nuovoCittadinoDTO.getCittadinoEntity() != null ? nuovoCittadinoDTO.getCittadinoEntity().getId() @@ -579,13 +626,15 @@ public ElaboratoCSVResponse buildResponse(List serviziValid } catch (Exception exc) { log.info("-XXX- Exception eccezione bonifica record questionario: {} -XXX-", exc.getMessage()); exc.printStackTrace(); - log.info("-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", + log.info( + "-XXX- Eccezione bonifica record andato in errore in servizio: {} e cittadino {} -XXX-", idServizio, nuovoCittadinoDTO != null && nuovoCittadinoDTO.getCittadinoEntity() != null ? nuovoCittadinoDTO.getCittadinoEntity().getId() : "NON ANCORA CREATO"); } } + } serviziScartati.sort(Comparator.comparing( serviziScartatiDTO -> serviziScartatiDTO.getCampiAggiuntiviCSV().getNumeroRiga())); @@ -673,13 +722,15 @@ private Optional recuperaUtenteFacilitatoreDaRichiesta(String idFa if (optutenteEntity.isPresent()) { return optutenteEntity; } - List utenteEntities = utenteRepository.findByNominativoFacilitatore(nominativoFacilitatoreModified); + List utenteEntities = utenteRepository + .findByNominativoFacilitatore(nominativoFacilitatoreModified); if (!utenteEntities.isEmpty()) { return Optional.of(utenteEntities.get(0)); } - // List utenteEntities = utenteRepository.findByNomeAndCognome(nome, cognome); + // List utenteEntities = + // utenteRepository.findByNomeAndCognome(nome, cognome); // if (!utenteEntities.isEmpty()) { - // return Optional.of(utenteEntities.get(0)); + // return Optional.of(utenteEntities.get(0)); // } return Optional.ofNullable(null); } @@ -713,7 +764,8 @@ private boolean existsByServizioAndEnteSedeProgettoFacilitatoreKey(Long idServiz enteSedeProgettoFacilitatoreKey); } - private ServizioEntity salvaServizio(Optional servizioOpt, ServizioRequest servizio) { + private ServizioEntity salvaServizio(Optional servizioOpt, ServizioRequest servizio, String idRegistroAttivita) { + servizio.setCodInserimento(idRegistroAttivita); return servizioOpt.orElseGet(() -> servizioService.creaServizio(servizio, true)); } diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/QuestionarioCompilatoService.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/QuestionarioCompilatoService.java index 8b369e00c..8f62a0d3e 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/QuestionarioCompilatoService.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/QuestionarioCompilatoService.java @@ -130,6 +130,8 @@ public void compilaQuestionario( final QuestionarioCompilatoEntity questionarioCompilatoDBMySqlFetch = questionarioCompilatoEntity.get(); questionarioCompilatoDBMySqlFetch.setStato(StatoQuestionarioEnum.COMPILATA.getValue()); questionarioCompilatoDBMySqlFetch.setDataOraAggiornamento(new Date()); + if(questionarioCompilatoRequest.getCodInserimento() != null) + questionarioCompilatoDBMySqlFetch.setCodInserimento(questionarioCompilatoRequest.getCodInserimento()); this.questionarioCompilatoSQLRepository.save(questionarioCompilatoDBMySqlFetch); final QuestionarioCompilatoCollection questionarioCompilatoDBMongoFetch = questionarioCompilatoCollection.get(); diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioService.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioService.java index a8b0a34f3..425537a7c 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioService.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioService.java @@ -292,7 +292,7 @@ public ServizioEntity creaServizio( } } } - } + } // creo SezioneQ3Mongo final SezioneQ3Collection sezioneQ3Compilato = this.creaSezioneQ3(servizioRequest); diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioSqlService.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioSqlService.java index 7e113db18..a301e18b2 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioSqlService.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioSqlService.java @@ -288,6 +288,9 @@ public ServizioEntity creaServizio( servizioEntity.setDataOraAggiornamento(servizioEntity.getDataOraCreazione()); servizioEntity.setStato(StatoEnum.NON_ATTIVO.getValue()); servizioEntity.setTipologiaServizio(String.join(", ", servizioRequest.getListaTipologiaServizi())); + if(servizioRequest.getCodInserimento() != null) { + servizioEntity.setCodInserimento(servizioRequest.getCodInserimento()); + } final List listaTitoloTipologiaServizi = servizioRequest.getListaTipologiaServizi();