Sistemato getActivity per i clienti

This commit is contained in:
2024-06-07 19:05:46 +02:00
parent fad75298f9
commit b8c4caaa9b
2 changed files with 64 additions and 18 deletions

View File

@@ -148,6 +148,8 @@ public class ActivityDTO {
@SqlField(value = "flag_risolto")
private String flagRisolto;
private String emailRichiedente;
public StbActivity getStbActivity() {
return stbActivity;
@@ -614,6 +616,15 @@ public class ActivityDTO {
return this;
}
public String getEmailRichiedente() {
return emailRichiedente;
}
public ActivityDTO setEmailRichiedente(String emailRichiedente) {
this.emailRichiedente = emailRichiedente;
return this;
}
public static class WorkedHours {
@SqlField("parent_activity_id")
private String parentActivityId;

View File

@@ -767,16 +767,19 @@ public class ActivityService {
public List<ActivityDTO> getActivity(boolean isTable, boolean daInstallare, String activityId) throws Exception {
String username = requestDataDTO.getUsername();
String sql = Query.format( "SELECT case when key_group = 3 THEN IsNull(user_name_rif, user_name) ELSE user_name END, CAST( case when key_group = 3 and user_name_rif is not null THEN 1 ELSE 0 END as BIT) as isCliente FROM stb_user WHERE user_name = %s" , username);
String sql = Query.format("SELECT case when key_group = 3 THEN IsNull(user_name_rif, user_name) ELSE user_name END AS user_name, \n" +
"CAST( case when key_group = 3 THEN 1 ELSE 0 END as BIT) as isCliente,\n" +
"CAST( case when key_group = 3 and user_name_rif is not null THEN 1 ELSE 0 END as BIT) as isPersonaRif FROM stb_user WHERE user_name = %s", username);
HashMap<String, Object> datiUtente = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql);
boolean isPersonaRif = false;
boolean isCliente = false;
if (!datiUtente.isEmpty()) {
username = UtilityHashMap.getValueIfExists(datiUtente, "user_name");
isCliente = UtilityHashMap.getValueIfExists(datiUtente, "isCliente");
isPersonaRif = UtilityHashMap.getValueIfExists(datiUtente, "isPersonaRif");
}
sql = "WITH escludi_commesse AS (SELECT value_string cod_jcom\n" +
" FROM dbo.parsestringintoarray((SELECT value\n" +
" FROM stb_gest_setup\n" +
@@ -960,24 +963,26 @@ public class ActivityService {
" LEFT OUTER JOIN sottoattivita ON processi.activity_id = sottoattivita.parent_activity_id\n";
if (!isTable) {
sql += " where processi.effective_endtime IS NULL AND processi.tipo_attivita <> 'AGGIORNAMENTI SOFTWARE' ";
sql += " WHERE processi.effective_endtime IS NULL " +
" AND processi.tipo_attivita <> 'AGGIORNAMENTI SOFTWARE'";
if (daInstallare) {
sql += " AND esito = 'DA INSTALLARE' AND cod_jcom not like 'INTEGRY%'";
}
} else if (activityId != null) {
sql += " where processi.activity_id = " + UtilityDB.valueToString(activityId);
}
sql += " WHERE processi.activity_id = " + UtilityDB.valueToString(activityId);
} else if (isCliente) {
sql += " WHERE esito NOT IN ('ANNULLATA', 'SOSPESA')";
if ( isCliente ) {
if (isPersonaRif) {
String whereCondPersRif =
Query.format("EXISTS( SELECT *\n" +
Query.format(" AND EXISTS( SELECT *\n" +
" from stb_user s inner join vtb_clie_pers_rif on s.e_mail = vtb_clie_pers_rif.e_mail\n" +
" where S.USER_NAME = %s and vtb_clie_pers_rif.persona_rif = processi.richiedente )",
username);
sql = UtilityDB.addwhereCond(sql, whereCondPersRif, true);
requestDataDTO.getUsername());
sql += whereCondPersRif;
}
}
List<ActivityDTO> activityDTOS = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, ActivityDTO.class);
List<String> elencoId = Stream.of(activityDTOS).map(ActivityDTO::getIdAttivita).toList();
@@ -988,9 +993,6 @@ public class ActivityService {
"where stb_activity.parent_activity_id in (" + UtilityDB.listValueToString(elencoId) + ")\n" +
"group by parent_activity_id, stb_activity.user_name, full_name";
// if (!isTable)
// sql = UtilityDB.addwhereCond(sql, "not exists (select * from stb_activity_result where flag_stato_attivita = 4 and stb_activity_result.activity_result_id = stb_activity.activity_result_id )", true);
List<ActivityDTO.WorkedHours> activityResponseDtoWorkedHours = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, ActivityDTO.WorkedHours.class);
if (activityResponseDtoWorkedHours != null) {
@@ -1137,6 +1139,38 @@ public class ActivityService {
}
public void insertOrUpdateActivity(ActivityDTO activity) throws Exception {
String codAnagPersRif, codAnag;
if (!UtilityString.isNullOrEmpty(activity.getEmailRichiedente())) {
String query = "SELECT vtb_clie_pers_rif.cod_anag FROM vtb_clie_pers_rif, vtb_clie "
+ "WHERE vtb_clie_pers_rif.cod_anag = vtb_clie.cod_anag AND "
+ "vtb_clie.flag_stato = 'A' AND vtb_clie_pers_rif.e_mail = "
+ UtilityDB.valueToString(activity.getEmailRichiedente());
codAnagPersRif = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
if (UtilityString.isNullOrEmpty(codAnagPersRif)) {
query = "SELECT cod_anag FROM jtb_comt WHERE cod_jcom = "
+ UtilityDB.valueToString(activity.getCommessa());
codAnag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), query);
String domainIntegry = "integry.it";
if (!UtilityString.isNullOrEmpty(codAnag) && !activity.getEmailRichiedente().toUpperCase().contains(domainIntegry.toUpperCase())) {
GtbAnag gtbAnag = new GtbAnag()
.setCodAnag(codAnag);
VtbCliePersRif persRif = new VtbCliePersRif()
.setCodAnag(codAnag)
.setPersonaRif(activity.getRichiedente())
.seteMail(activity.getEmailRichiedente());
persRif.setOperation(OperationType.INSERT);
gtbAnag.getVtbCliePersRif().add(persRif);
entityProcessor.processEntity(gtbAnag, multiDBTransactionManager);
}
}
}
StbActivity stbActivity = new StbActivity();
stbActivity.setOperation(OperationType.INSERT_OR_UPDATE);
@@ -1149,6 +1183,7 @@ public class ActivityService {
.setPersonaRif(activity.getRichiedente())
.setUserName(activity.getUserName())
.setEffectiveEndtime(activity.getDataFineEffettiva())
.setEffectiveEnddate(activity.getDataFineEffettiva())
.setEstimatedTime(activity.getDataInizioPrev())
.setEstimatedEndtime(activity.getDataFinePrev())
.setPriorita(activity.getPriorita())