Aggiornata sincronizzazione
This commit is contained in:
parent
c81a54f25b
commit
1ffb8c4a82
|
@ -15,6 +15,7 @@ import org.springframework.stereotype.Component;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
import it.cnr.isti.epasmed.config.ApplicationProperties;
|
import it.cnr.isti.epasmed.config.ApplicationProperties;
|
||||||
|
import it.cnr.isti.epasmed.epas.model.EPASOffSiteWorks;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
|
import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@ -79,20 +80,21 @@ public class EPASOffSiteWorksClient {
|
||||||
return listEPASPersonDays;
|
return listEPASPersonDays;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EPASPersonDays> getListByOfficeCodeId(String id, String year, String month) {
|
|
||||||
|
public List<EPASOffSiteWorks> getListByOfficeCodeId(String id, String year, String month) {
|
||||||
log.info("Retrieving Off Site Works List by office code id: {}", id);
|
log.info("Retrieving Off Site Works List by office code id: {}", id);
|
||||||
Map<String, String> uriVariables = new HashMap<>();
|
Map<String, String> uriVariables = new HashMap<>();
|
||||||
uriVariables.put("sedeId", id);
|
uriVariables.put("sedeId", id);
|
||||||
uriVariables.put("year", year);
|
uriVariables.put("year", year);
|
||||||
uriVariables.put("month", month);
|
uriVariables.put("month", month);
|
||||||
|
|
||||||
ResponseEntity<List<EPASPersonDays>> responseEntity = rt.exchange(appProps.getDatasourceEpasRest().getRestUrl()
|
ResponseEntity<List<EPASOffSiteWorks>> responseEntity = rt.exchange(appProps.getDatasourceEpasRest().getRestUrl()
|
||||||
+ "/v3/personDays/offSiteWorkByPersonAndMonth?sedeId={sedeId}&year={year}&month={month}",
|
+ "/v3/personDays/offSiteWorkByOfficeAndMonth?sedeId={sedeId}&year={year}&month={month}",
|
||||||
HttpMethod.GET, null, new ParameterizedTypeReference<List<EPASPersonDays>>() {
|
HttpMethod.GET, null, new ParameterizedTypeReference<List<EPASOffSiteWorks>>() {
|
||||||
}, uriVariables);
|
}, uriVariables);
|
||||||
List<EPASPersonDays> listEPASPersonDays = responseEntity.getBody();
|
List<EPASOffSiteWorks> listEPASOffSiteWorks = responseEntity.getBody();
|
||||||
log.info("Retrieved Off Site Works List: {}", listEPASPersonDays);
|
log.info("Retrieved Off Site Works List: {}", listEPASOffSiteWorks);
|
||||||
return listEPASPersonDays;
|
return listEPASOffSiteWorks;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
package it.cnr.isti.epasmed.epas.model;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class EPASOffSiteWorks implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private EPASAbsences[] absences;
|
||||||
|
private String date;
|
||||||
|
private Integer difference;
|
||||||
|
private String id;
|
||||||
|
private Boolean isHoliday;
|
||||||
|
private Boolean isTicketAvailable;
|
||||||
|
private EPASPersons person;
|
||||||
|
private Integer progressive;
|
||||||
|
private EPASStampings[] stampings;
|
||||||
|
private Integer timeAtWork;
|
||||||
|
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import it.cnr.isti.epasmed.epas.client.EPASOffSiteWorksClient;
|
import it.cnr.isti.epasmed.epas.client.EPASOffSiteWorksClient;
|
||||||
|
import it.cnr.isti.epasmed.epas.model.EPASOffSiteWorks;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
|
import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@ -26,7 +27,7 @@ public class EPASOffSiteWorksService {
|
||||||
return epasOffSiteWorksClient.getListByPersonEmail(email, year, month);
|
return epasOffSiteWorksClient.getListByPersonEmail(email, year, month);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EPASPersonDays> getListByOfficeCodeId(String id, String year, String month) {
|
public List<EPASOffSiteWorks> getListByOfficeCodeId(String id, String year, String month) {
|
||||||
return epasOffSiteWorksClient.getListByOfficeCodeId(id, year, month);
|
return epasOffSiteWorksClient.getListByOfficeCodeId(id, year, month);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package it.cnr.isti.epasmed.sistemainformativo.model;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.sql.Date;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class SILavoroFuoriSede implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
private Long id;
|
||||||
|
private Integer idpersona;
|
||||||
|
private String cf;
|
||||||
|
private Date giorno;
|
||||||
|
private String luogo;
|
||||||
|
private String motivo;
|
||||||
|
private String way;
|
||||||
|
private Timestamp data_mod;
|
||||||
|
private String flag_del;
|
||||||
|
private Long id_flusso;
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package it.cnr.isti.epasmed.sistemainformativo.repository;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import it.cnr.isti.epasmed.sistemainformativo.model.SILavoroFuoriSede;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class SILavoroFuoriSedeRepository {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(SILavoroFuoriSedeRepository.class);
|
||||||
|
|
||||||
|
private JdbcTemplate jdbcTemplate;
|
||||||
|
|
||||||
|
//
|
||||||
|
public SILavoroFuoriSedeRepository(final @Qualifier("sistemaInformativoDataSource") DataSource dataSource) {
|
||||||
|
super();
|
||||||
|
this.jdbcTemplate = new JdbcTemplate(dataSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeNewFlux(Long fluxId, SILavoroFuoriSede siLavoroFuoriSede) {
|
||||||
|
jdbcTemplate.update("INSERT INTO epas_lavoro_fuori_sede (id,idpersona,cf,"
|
||||||
|
+ "giorno,luogo,motivo,way,data_mod,flag_del,id_flusso) "
|
||||||
|
+ "VALUES (?,?,?,?,?,?,?,?,?,?)",
|
||||||
|
siLavoroFuoriSede.getId(),siLavoroFuoriSede.getIdpersona(),siLavoroFuoriSede.getCf(),
|
||||||
|
siLavoroFuoriSede.getGiorno(),siLavoroFuoriSede.getLuogo(),siLavoroFuoriSede.getMotivo(),
|
||||||
|
siLavoroFuoriSede.getWay(),siLavoroFuoriSede.getData_mod(),siLavoroFuoriSede.getFlag_del(),fluxId);
|
||||||
|
logger.debug("Writed SILavoroFuoriSede: {}",siLavoroFuoriSede);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -34,7 +34,7 @@ public class SIMasterLogRepository {
|
||||||
public void startFluxReads() {
|
public void startFluxReads() {
|
||||||
logger.info("Iniziato Flusso in lettura");
|
logger.info("Iniziato Flusso in lettura");
|
||||||
jdbcTemplate.update("INSERT INTO master_log (codice_flusso, tabelle, operazione, data_inizio_oper) "
|
jdbcTemplate.update("INSERT INTO master_log (codice_flusso, tabelle, operazione, data_inizio_oper) "
|
||||||
+ "VALUES ('epas','anagrafico,mail,telefoni,gruppi','L',current_timestamp)");
|
+ "VALUES ('epas','anagrafico,mail,telefoni,gruppi,gruppo_pers','L',current_timestamp)");
|
||||||
logger.info("Flusso in lettura aperto");
|
logger.info("Flusso in lettura aperto");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -75,8 +75,8 @@ public class SIMasterLogRepository {
|
||||||
public Long startFluxWrites() throws Exception {
|
public Long startFluxWrites() throws Exception {
|
||||||
logger.info("Iniziato Flusso in scrittura");
|
logger.info("Iniziato Flusso in scrittura");
|
||||||
jdbcTemplate.update("INSERT INTO master_log (codice_flusso, tabelle, operazione, data_inizio_oper)"
|
jdbcTemplate.update("INSERT INTO master_log (codice_flusso, tabelle, operazione, data_inizio_oper)"
|
||||||
+ " VALUES ('epas','epas_cartellini, epas_cartellini_rendicontazioni, epas_festivita,"
|
+ " VALUES ('epas','epas_cartellini, epas_cartellini_rendicontazioni,"
|
||||||
+ " epas_orario, epas_pers_orario,"
|
+ " epas_orario,"
|
||||||
+ " epas_lavoro_fuori_sede',"
|
+ " epas_lavoro_fuori_sede',"
|
||||||
+ " 'S',current_timestamp)");
|
+ " 'S',current_timestamp)");
|
||||||
logger.info("Flusso in scrittura aperto");
|
logger.info("Flusso in scrittura aperto");
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package it.cnr.isti.epasmed.sistemainformativo.service;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import it.cnr.isti.epasmed.sistemainformativo.model.SILavoroFuoriSede;
|
||||||
|
import it.cnr.isti.epasmed.sistemainformativo.repository.SILavoroFuoriSedeRepository;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service class for managing Lavoro Fuori Sede.
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional("sistemaInformativoTransactionManager")
|
||||||
|
public class SILavoroFuoriSedeService {
|
||||||
|
|
||||||
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
|
private final SILavoroFuoriSedeRepository siLavoroFuoriSedeRepository;
|
||||||
|
|
||||||
|
public SILavoroFuoriSedeService(SILavoroFuoriSedeRepository siLavoroFuoriSedeRepository) {
|
||||||
|
super();
|
||||||
|
this.siLavoroFuoriSedeRepository = siLavoroFuoriSedeRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void writeNewFlux(Long fluxId, SILavoroFuoriSede siLavoroFuoriSede) {
|
||||||
|
log.debug("Write SILavoroFuoriSede Flux = {}",fluxId);
|
||||||
|
siLavoroFuoriSedeRepository.writeNewFlux(fluxId,siLavoroFuoriSede);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ import java.time.LocalDateTime;
|
||||||
import java.time.YearMonth;
|
import java.time.YearMonth;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.format.DateTimeFormatterBuilder;
|
import java.time.format.DateTimeFormatterBuilder;
|
||||||
|
import java.time.format.DateTimeParseException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -31,6 +32,7 @@ import it.cnr.isti.epasmed.epas.mapper.EPASPersonsMapper;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASAbsences;
|
import it.cnr.isti.epasmed.epas.model.EPASAbsences;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASAffiliations;
|
import it.cnr.isti.epasmed.epas.model.EPASAffiliations;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASGroups;
|
import it.cnr.isti.epasmed.epas.model.EPASGroups;
|
||||||
|
import it.cnr.isti.epasmed.epas.model.EPASOffSiteWorks;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
|
import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASPersons;
|
import it.cnr.isti.epasmed.epas.model.EPASPersons;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASStampings;
|
import it.cnr.isti.epasmed.epas.model.EPASStampings;
|
||||||
|
@ -39,6 +41,7 @@ import it.cnr.isti.epasmed.epas.model.EPASValidates;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASWorkingTimeTypes;
|
import it.cnr.isti.epasmed.epas.model.EPASWorkingTimeTypes;
|
||||||
import it.cnr.isti.epasmed.epas.service.EPASAffiliationsService;
|
import it.cnr.isti.epasmed.epas.service.EPASAffiliationsService;
|
||||||
import it.cnr.isti.epasmed.epas.service.EPASGroupsService;
|
import it.cnr.isti.epasmed.epas.service.EPASGroupsService;
|
||||||
|
import it.cnr.isti.epasmed.epas.service.EPASOffSiteWorksService;
|
||||||
import it.cnr.isti.epasmed.epas.service.EPASPersonsService;
|
import it.cnr.isti.epasmed.epas.service.EPASPersonsService;
|
||||||
import it.cnr.isti.epasmed.epas.service.EPASTimeCardsService;
|
import it.cnr.isti.epasmed.epas.service.EPASTimeCardsService;
|
||||||
import it.cnr.isti.epasmed.epas.service.EPASValidatesService;
|
import it.cnr.isti.epasmed.epas.service.EPASValidatesService;
|
||||||
|
@ -51,6 +54,7 @@ import it.cnr.isti.epasmed.sistemainformativo.model.SICartelliniRendicontazioni;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.model.SIEmail;
|
import it.cnr.isti.epasmed.sistemainformativo.model.SIEmail;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.model.SIGruppi;
|
import it.cnr.isti.epasmed.sistemainformativo.model.SIGruppi;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.model.SIGruppiPers;
|
import it.cnr.isti.epasmed.sistemainformativo.model.SIGruppiPers;
|
||||||
|
import it.cnr.isti.epasmed.sistemainformativo.model.SILavoroFuoriSede;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.model.SIOrario;
|
import it.cnr.isti.epasmed.sistemainformativo.model.SIOrario;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.model.SITelefoni;
|
import it.cnr.isti.epasmed.sistemainformativo.model.SITelefoni;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.service.SIAnagraficoService;
|
import it.cnr.isti.epasmed.sistemainformativo.service.SIAnagraficoService;
|
||||||
|
@ -59,6 +63,7 @@ import it.cnr.isti.epasmed.sistemainformativo.service.SICartelliniService;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.service.SIEmailService;
|
import it.cnr.isti.epasmed.sistemainformativo.service.SIEmailService;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.service.SIGruppiPersService;
|
import it.cnr.isti.epasmed.sistemainformativo.service.SIGruppiPersService;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.service.SIGruppiService;
|
import it.cnr.isti.epasmed.sistemainformativo.service.SIGruppiService;
|
||||||
|
import it.cnr.isti.epasmed.sistemainformativo.service.SILavoroFuoriSedeService;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.service.SIMasterLogService;
|
import it.cnr.isti.epasmed.sistemainformativo.service.SIMasterLogService;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.service.SIOrarioService;
|
import it.cnr.isti.epasmed.sistemainformativo.service.SIOrarioService;
|
||||||
import it.cnr.isti.epasmed.sistemainformativo.service.SITelefoniService;
|
import it.cnr.isti.epasmed.sistemainformativo.service.SITelefoniService;
|
||||||
|
@ -103,6 +108,8 @@ public class SyncService {
|
||||||
SICartelliniRendicontazioniService siCartelliniRendicontazioniService;
|
SICartelliniRendicontazioniService siCartelliniRendicontazioniService;
|
||||||
@Autowired
|
@Autowired
|
||||||
SIOrarioService siOrarioService;
|
SIOrarioService siOrarioService;
|
||||||
|
@Autowired
|
||||||
|
SILavoroFuoriSedeService siLavoroFuoriSedeService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
EPASPersonsService epasPersonsService;
|
EPASPersonsService epasPersonsService;
|
||||||
|
@ -114,11 +121,12 @@ public class SyncService {
|
||||||
EPASAffiliationsService epasAffiliationsService;
|
EPASAffiliationsService epasAffiliationsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
EPASWorkingTimeTypesService epasWorkingTimeTypesService;
|
EPASWorkingTimeTypesService epasWorkingTimeTypesService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
EPASTimeCardsService epasTimeCardsService;
|
EPASTimeCardsService epasTimeCardsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
EPASValidatesService epasValidatesService;
|
EPASValidatesService epasValidatesService;
|
||||||
|
@Autowired
|
||||||
|
EPASOffSiteWorksService epasOffSiteWorksService;
|
||||||
|
|
||||||
private boolean banagrafico;
|
private boolean banagrafico;
|
||||||
private boolean bemail;
|
private boolean bemail;
|
||||||
|
@ -134,15 +142,25 @@ public class SyncService {
|
||||||
private boolean blavoro_fuori_sede;
|
private boolean blavoro_fuori_sede;
|
||||||
private boolean baspettative;
|
private boolean baspettative;
|
||||||
|
|
||||||
public void executeReads() throws Exception {
|
private void setBReadTables() {
|
||||||
banagrafico = false;
|
banagrafico = false;
|
||||||
bemail = false;
|
bemail = false;
|
||||||
btelefoni = false;
|
btelefoni = false;
|
||||||
bgruppi = false;
|
bgruppi = false;
|
||||||
bgruppo_pers = false;
|
bgruppo_pers = false;
|
||||||
// bposizioni = false;
|
}
|
||||||
// bproroghe = false;
|
|
||||||
|
|
||||||
|
private void setBWriteTables() {
|
||||||
|
bcartellini = false;
|
||||||
|
bcartellini_rendicontazioni = false;
|
||||||
|
borario = false;
|
||||||
|
bpers_orario = false;
|
||||||
|
blavoro_fuori_sede = false;
|
||||||
|
// baspettative=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void executeReads() throws Exception {
|
||||||
|
setBReadTables();
|
||||||
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
|
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
|
||||||
siMasterLogService.startFluxReads();
|
siMasterLogService.startFluxReads();
|
||||||
readData(tabsSI);
|
readData(tabsSI);
|
||||||
|
@ -150,36 +168,42 @@ public class SyncService {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void executeWrites() throws Exception {
|
public void executeWrites(String year, String month) throws Exception {
|
||||||
borario = false;
|
setBWriteTables();
|
||||||
bcartellini = false;
|
|
||||||
bcartellini_rendicontazioni = false;
|
|
||||||
bpers_orario = false;
|
|
||||||
blavoro_fuori_sede = false;
|
|
||||||
baspettative = false;
|
|
||||||
|
|
||||||
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
|
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
|
||||||
Long fluxId = siMasterLogService.startFluxWrites();
|
Long fluxId = siMasterLogService.startFluxWrites();
|
||||||
writeData(fluxId, tabsSI);
|
writeData(fluxId, tabsSI, year, month);
|
||||||
|
siMasterLogService.closeFluxWrites(fluxId, writeTabs());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void executeWritesOrario() throws Exception {
|
||||||
|
setBWriteTables();
|
||||||
|
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
|
||||||
|
Long fluxId = siMasterLogService.startFluxWrites();
|
||||||
|
writeOrarioData(fluxId, tabsSI);
|
||||||
siMasterLogService.closeFluxWrites(fluxId, writeTabs());
|
siMasterLogService.closeFluxWrites(fluxId, writeTabs());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void executeTimeCardsWrites() throws Exception {
|
public void executeWritesTimeCards(String year, String month) throws Exception {
|
||||||
borario = false;
|
setBWriteTables();
|
||||||
bcartellini = false;
|
|
||||||
bcartellini_rendicontazioni = false;
|
|
||||||
bpers_orario = false;
|
|
||||||
blavoro_fuori_sede = false;
|
|
||||||
baspettative = false;
|
|
||||||
|
|
||||||
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
|
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
|
||||||
Long fluxId = siMasterLogService.startFluxWrites();
|
Long fluxId = siMasterLogService.startFluxWrites();
|
||||||
writeTimeCardsData(fluxId, tabsSI);
|
writeTimeCardsData(fluxId, tabsSI, year, month);
|
||||||
siMasterLogService.closeFluxWrites(fluxId, writeTabs());
|
siMasterLogService.closeFluxWrites(fluxId, writeTabs());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void executeWriteOffSiteWorks(String year, String month) throws Exception {
|
||||||
|
setBWriteTables();
|
||||||
|
List<TabsSI> tabsSI = tabsSIService.getAllTabsSI();
|
||||||
|
Long fluxId = siMasterLogService.startFluxWrites();
|
||||||
|
writeOffSiteWorksData(fluxId, tabsSI, year, month);
|
||||||
|
siMasterLogService.closeFluxWrites(fluxId, writeTabs());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void readData(List<TabsSI> tabsSI) {
|
private void readData(List<TabsSI> tabsSI) {
|
||||||
// TabsSI posizioniTab = null;
|
// TabsSI posizioniTab = null;
|
||||||
// TabsSI prorogheTab = null;
|
// TabsSI prorogheTab = null;
|
||||||
|
@ -780,8 +804,7 @@ public class SyncService {
|
||||||
return writeTabs;
|
return writeTabs;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeData(Long fluxId, List<TabsSI> tabsSI) {
|
private void writeOrarioData(Long fluxId, List<TabsSI> tabsSI) {
|
||||||
|
|
||||||
for (TabsSI tab : tabsSI) {
|
for (TabsSI tab : tabsSI) {
|
||||||
logger.info("TabSI: {}", tab);
|
logger.info("TabSI: {}", tab);
|
||||||
if (tab.getOperazioni() != null && !tab.getOperazioni().isEmpty()
|
if (tab.getOperazioni() != null && !tab.getOperazioni().isEmpty()
|
||||||
|
@ -816,7 +839,11 @@ public class SyncService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeTimeCardsData(Long fluxId, List<TabsSI> tabsSI) throws Exception {
|
private void writeData(Long fluxId, List<TabsSI> tabsSI, String year, String month) throws Exception {
|
||||||
|
logger.info("Report {}-{}", year, month);
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
checkValidMonthToSend(year, month);
|
||||||
|
TimeCardsReporting timeCardsReporting = createTimeCardReporting(fluxId, year, month, now);
|
||||||
|
|
||||||
for (TabsSI tab : tabsSI) {
|
for (TabsSI tab : tabsSI) {
|
||||||
logger.info("TabSI: {}", tab);
|
logger.info("TabSI: {}", tab);
|
||||||
|
@ -836,7 +863,46 @@ public class SyncService {
|
||||||
case "cartellini":
|
case "cartellini":
|
||||||
break;
|
break;
|
||||||
case "cartellini_rendicontazioni":
|
case "cartellini_rendicontazioni":
|
||||||
syncCartelliniRendicontazioni(fluxId, tab);
|
syncCartelliniRendicontazioni(fluxId, tab, year, month, now, timeCardsReporting);
|
||||||
|
break;
|
||||||
|
case "lavoro_fuori_sede":
|
||||||
|
syncLavoroFuoriSede(fluxId, tab, year, month, now);
|
||||||
|
break;
|
||||||
|
// case "aspettative":
|
||||||
|
// syncAspettative(fluxId,tab);
|
||||||
|
// break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void writeTimeCardsData(Long fluxId, List<TabsSI> tabsSI, String year, String month) throws Exception {
|
||||||
|
logger.info("Report {}-{}", year, month);
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
checkValidMonthToSend(year, month);
|
||||||
|
TimeCardsReporting timeCardsReporting = createTimeCardReporting(fluxId, year, month, now);
|
||||||
|
|
||||||
|
for (TabsSI tab : tabsSI) {
|
||||||
|
logger.info("TabSI: {}", tab);
|
||||||
|
if (tab.getOperazioni() != null && !tab.getOperazioni().isEmpty()
|
||||||
|
&& tab.getOperazioni().compareTo("W") == 0) {
|
||||||
|
if (tab.getNome() == null || tab.getNome().isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (tab.getNome()) {
|
||||||
|
// case "orario":
|
||||||
|
// syncOrario(fluxId, tab);
|
||||||
|
// break;
|
||||||
|
// case "pers_orario":
|
||||||
|
// syncPersOrario(fluxId,tab);
|
||||||
|
// break;
|
||||||
|
case "cartellini":
|
||||||
|
break;
|
||||||
|
case "cartellini_rendicontazioni":
|
||||||
|
syncCartelliniRendicontazioni(fluxId, tab, year, month, now, timeCardsReporting);
|
||||||
break;
|
break;
|
||||||
// case "lavoro_fuori_sede":
|
// case "lavoro_fuori_sede":
|
||||||
// syncLavoroFuoriSede(fluxId,tab);
|
// syncLavoroFuoriSede(fluxId,tab);
|
||||||
|
@ -852,6 +918,45 @@ public class SyncService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void writeOffSiteWorksData(Long fluxId, List<TabsSI> tabsSI, String year, String month) throws Exception {
|
||||||
|
logger.info("Report {}-{}", year, month);
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
checkValidMonthToSend(year, month);
|
||||||
|
|
||||||
|
for (TabsSI tab : tabsSI) {
|
||||||
|
logger.info("TabSI: {}", tab);
|
||||||
|
if (tab.getOperazioni() != null && !tab.getOperazioni().isEmpty()
|
||||||
|
&& tab.getOperazioni().compareTo("W") == 0) {
|
||||||
|
if (tab.getNome() == null || tab.getNome().isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (tab.getNome()) {
|
||||||
|
// case "orario":
|
||||||
|
// syncOrario(fluxId, tab);
|
||||||
|
// break;
|
||||||
|
// case "pers_orario":
|
||||||
|
// syncPersOrario(fluxId,tab);
|
||||||
|
// break;
|
||||||
|
// case "cartellini":
|
||||||
|
// break;
|
||||||
|
// case "cartellini_rendicontazioni":
|
||||||
|
// syncCartelliniRendicontazioni(fluxId, tab);
|
||||||
|
// break;
|
||||||
|
case "lavoro_fuori_sede":
|
||||||
|
syncLavoroFuoriSede(fluxId, tab, year, month, now);
|
||||||
|
break;
|
||||||
|
// case "aspettative":
|
||||||
|
// syncAspettative(fluxId,tab);
|
||||||
|
// break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void syncOrario(Long fluxId, TabsSI tab) {
|
private void syncOrario(Long fluxId, TabsSI tab) {
|
||||||
if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) {
|
if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) {
|
||||||
logger.error("Invalid Id Flusso for tab: {}", tab);
|
logger.error("Invalid Id Flusso for tab: {}", tab);
|
||||||
|
@ -894,50 +999,130 @@ public class SyncService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void syncCartelliniRendicontazioni(Long fluxId, TabsSI tab) throws Exception {
|
private void syncLavoroFuoriSede(Long fluxId, TabsSI tab, String year, String month, LocalDateTime now)
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) {
|
if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) {
|
||||||
logger.error("Invalid Id Flusso for tab: {}", tab);
|
logger.error("Invalid Id Flusso for tab: {}", tab);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<TimeCardsReporting> lastTcR = timeCardsReportingService.getLastTimeCardsReporting();
|
logger.info("Reference: {}-{}", year, month);
|
||||||
if (!lastTcR.isPresent()) {
|
|
||||||
logger.error("Invalid TimeCardsReporting start point: {}", tab);
|
List<EPASOffSiteWorks> epasOffSiteWorksList = epasOffSiteWorksService.getListByOfficeCodeId(ISTI_OFFICE_CODEID,
|
||||||
|
year, month);
|
||||||
|
|
||||||
|
if (epasOffSiteWorksList == null || epasOffSiteWorksList.isEmpty()) {
|
||||||
|
logger.info("OffSiteWorks not found for: {} - {} ", year, month);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Integer year = lastTcR.get().getYear();
|
|
||||||
Integer month = lastTcR.get().getMonth();
|
|
||||||
|
|
||||||
YearMonth nextMonthToSent = YearMonth.of(year, month);
|
// "2021-02-03T09:49:05.231072"
|
||||||
nextMonthToSent = nextMonthToSent.plusMonths(1);
|
DateTimeFormatter formatter = new DateTimeFormatterBuilder().parseCaseInsensitive()
|
||||||
|
.append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).optionalStart().appendPattern(".SSSSSS").optionalEnd()
|
||||||
|
.optionalStart().appendZoneOrOffsetId().optionalEnd().toFormatter();
|
||||||
|
|
||||||
String yearRef = String.valueOf(nextMonthToSent.getYear());
|
// SI
|
||||||
String monthRef = String.valueOf(nextMonthToSent.getMonthValue());
|
for (EPASOffSiteWorks offSiteWorks : epasOffSiteWorksList) {
|
||||||
|
logger.info("Writing OffSiteWorks: {}", offSiteWorks);
|
||||||
|
if (offSiteWorks == null || offSiteWorks.getPerson() == null) {
|
||||||
|
logger.error("Invalid Off Site Works: {}", offSiteWorks);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
logger.info("Reference: {} - {} ", yearRef, monthRef);
|
if (offSiteWorks.getPerson().getFiscalCode() == null
|
||||||
|
|| offSiteWorks.getPerson().getFiscalCode().isEmpty()) {
|
||||||
|
logger.error("Invalid FiscalCode: {}", offSiteWorks.getPerson().getFiscalCode());
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
logger.info("FiscalCode: {}", offSiteWorks.getPerson().getFiscalCode());
|
||||||
|
}
|
||||||
|
|
||||||
EPASValidates epasValidates = epasValidatesService.getValidatesByOfficeCodeId(ISTI_OFFICE_CODEID, yearRef,
|
Integer idPersona = 0;
|
||||||
monthRef);
|
try {
|
||||||
|
idPersona = Integer.valueOf(offSiteWorks.getPerson().getId());
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
logger.error("Invalid Person Id: {}", offSiteWorks.getPerson().getId());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.info("Date: {}", offSiteWorks.getDate());
|
||||||
|
|
||||||
|
java.sql.Date date = null;
|
||||||
|
try {
|
||||||
|
date = java.sql.Date.valueOf(offSiteWorks.getDate());
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Invalid date format: {}", offSiteWorks.getDate());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (EPASStampings epasStamping : offSiteWorks.getStampings()) {
|
||||||
|
if (epasStamping == null) {
|
||||||
|
logger.error("Invalid Stamping: {}", epasStamping);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (epasStamping.getStampType() != null && !epasStamping.getStampType().isEmpty()
|
||||||
|
&& epasStamping.getStampType().compareTo("lavoroFuoriSede") == 0) {
|
||||||
|
logger.debug("Stamping Type: {}", epasStamping.getStampType());
|
||||||
|
|
||||||
|
Long id = 0L;
|
||||||
|
try {
|
||||||
|
id = Long.valueOf(epasStamping.getId());
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
logger.error("Invalid id for stamping: {}", e.getLocalizedMessage(), e);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.debug("Stamping Data: {}", epasStamping.getDate());
|
||||||
|
Timestamp dataMod;
|
||||||
|
try {
|
||||||
|
LocalDateTime dMod = LocalDateTime.parse(epasStamping.getDate(), formatter);
|
||||||
|
dataMod = Timestamp.valueOf(dMod);
|
||||||
|
} catch (IllegalArgumentException | DateTimeParseException e) {
|
||||||
|
logger.error("Invalid stamping data format: {}", e.getLocalizedMessage(), e);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
logger.debug("DataMod: {}", dataMod);
|
||||||
|
|
||||||
|
SILavoroFuoriSede siLavoroFuoriSede = new SILavoroFuoriSede(id, idPersona,
|
||||||
|
offSiteWorks.getPerson().getFiscalCode(), date, epasStamping.getPlace(),
|
||||||
|
epasStamping.getReason(), epasStamping.getWay(), dataMod, SI_FLAG_DEL_FALSE, fluxId);
|
||||||
|
|
||||||
|
siLavoroFuoriSedeService.writeNewFlux(fluxId, siLavoroFuoriSede);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
logger.info("SILavoroFuoriSede Updated");
|
||||||
|
|
||||||
|
blavoro_fuori_sede = true;
|
||||||
|
tab.setIdFlusso(fluxId);
|
||||||
|
tab.setLastUpdate(now);
|
||||||
|
tabsSIService.updateTabsSI(tab);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void syncCartelliniRendicontazioni(Long fluxId, TabsSI tab, String year, String month, LocalDateTime now,
|
||||||
|
TimeCardsReporting timeCardsReporting) throws Exception {
|
||||||
|
if (tab.getIdFlusso() == null || tab.getIdFlusso().longValue() == 0) {
|
||||||
|
logger.error("Invalid Id Flusso for tab: {}", tab);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.info("Reference: {}-{}", year, month);
|
||||||
|
|
||||||
|
EPASValidates epasValidates = epasValidatesService.getValidatesByOfficeCodeId(ISTI_OFFICE_CODEID, year, month);
|
||||||
// if (!epasValidates.getAllCertificationsValidated()) {
|
// if (!epasValidates.getAllCertificationsValidated()) {
|
||||||
// logger.info("No month closed on EPAS: {}", nextMonthToSent);
|
// logger.info("No month closed on EPAS: {}", nextMonthToSent);
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
logger.info("Certifications Validated: {}", nextMonthToSent);
|
|
||||||
// Set Update DateTime
|
// Set Update DateTime
|
||||||
LocalDateTime now = LocalDateTime.now();
|
|
||||||
Timestamp dataMod = Timestamp.valueOf(now);
|
Timestamp dataMod = Timestamp.valueOf(now);
|
||||||
|
|
||||||
// EPASMed
|
|
||||||
TimeCardsReporting timeCardsReporting = new TimeCardsReporting();
|
|
||||||
timeCardsReporting.setYear(nextMonthToSent.getYear());
|
|
||||||
timeCardsReporting.setMonth(nextMonthToSent.getMonthValue());
|
|
||||||
timeCardsReporting.setIdFlusso(fluxId);
|
|
||||||
timeCardsReporting.setLastUpdate(now);
|
|
||||||
|
|
||||||
timeCardsReporting = timeCardsReportingService.createTimeCardsReporting(timeCardsReporting);
|
|
||||||
|
|
||||||
logger.info("Persons Validated: {}", epasValidates.getValidatedPersons().length);
|
logger.info("Persons Validated: {}", epasValidates.getValidatedPersons().length);
|
||||||
checkFiscalCode(epasValidates.getValidatedPersons());
|
checkFiscalCode(epasValidates.getValidatedPersons());
|
||||||
|
|
||||||
|
@ -952,7 +1137,7 @@ public class SyncService {
|
||||||
}
|
}
|
||||||
|
|
||||||
EPASTimeCards epasTimeCards = epasTimeCardsService.getTimeCardByPersonFiscalCode(person.getFiscalCode(),
|
EPASTimeCards epasTimeCards = epasTimeCardsService.getTimeCardByPersonFiscalCode(person.getFiscalCode(),
|
||||||
yearRef, monthRef);
|
year, month);
|
||||||
|
|
||||||
EPASPersons epasPerson = epasTimeCards.getPerson();
|
EPASPersons epasPerson = epasTimeCards.getPerson();
|
||||||
Integer personId = Integer.valueOf(epasPerson.getId());
|
Integer personId = Integer.valueOf(epasPerson.getId());
|
||||||
|
@ -981,19 +1166,61 @@ public class SyncService {
|
||||||
logger.info("SICartellini Updated");
|
logger.info("SICartellini Updated");
|
||||||
|
|
||||||
SICartelliniRendicontazioni siCartelliniRendicontazioni = new SICartelliniRendicontazioni(
|
SICartelliniRendicontazioni siCartelliniRendicontazioni = new SICartelliniRendicontazioni(
|
||||||
timeCardsReporting.getId(), timeCardsReporting.getYear(), timeCardsReporting.getMonth(),
|
timeCardsReporting.getId(), timeCardsReporting.getYear(), timeCardsReporting.getMonth(), dataMod,
|
||||||
Timestamp.valueOf(timeCardsReporting.getLastUpdate()), SI_FLAG_DEL_FALSE, fluxId);
|
SI_FLAG_DEL_FALSE, fluxId);
|
||||||
siCartelliniRendicontazioniService.writeNewFlux(fluxId, siCartelliniRendicontazioni);
|
siCartelliniRendicontazioniService.writeNewFlux(fluxId, siCartelliniRendicontazioni);
|
||||||
logger.info("SICartelliniRendicontazioni Updated");
|
logger.info("SICartelliniRendicontazioni Updated");
|
||||||
|
|
||||||
bcartellini_rendicontazioni = true;
|
|
||||||
bcartellini = true;
|
bcartellini = true;
|
||||||
|
bcartellini_rendicontazioni = true;
|
||||||
tab.setIdFlusso(fluxId);
|
tab.setIdFlusso(fluxId);
|
||||||
tab.setLastUpdate(timeCardsReporting.getLastUpdate());
|
tab.setLastUpdate(now);
|
||||||
tabsSIService.updateTabsSI(tab);
|
tabsSIService.updateTabsSI(tab);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private TimeCardsReporting createTimeCardReporting(Long fluxId, String year, String month, LocalDateTime now) {
|
||||||
|
Integer iYear = Integer.parseInt(year);
|
||||||
|
Integer iMonth = Integer.parseInt(month);
|
||||||
|
|
||||||
|
// EPASMed
|
||||||
|
TimeCardsReporting timeCardsReporting = new TimeCardsReporting();
|
||||||
|
timeCardsReporting.setYear(iYear);
|
||||||
|
timeCardsReporting.setMonth(iMonth);
|
||||||
|
timeCardsReporting.setIdFlusso(fluxId);
|
||||||
|
timeCardsReporting.setLastUpdate(now);
|
||||||
|
timeCardsReporting = timeCardsReportingService.createTimeCardsReporting(timeCardsReporting);
|
||||||
|
return timeCardsReporting;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkValidMonthToSend(String year, String month) throws Exception {
|
||||||
|
Integer iYear = Integer.valueOf(year);
|
||||||
|
Integer iMonth = Integer.valueOf(month);
|
||||||
|
YearMonth selectedMonth = YearMonth.of(iYear, iMonth);
|
||||||
|
YearMonth nextMonthToSent = nextMonthToSend();
|
||||||
|
|
||||||
|
if (selectedMonth.compareTo(nextMonthToSent) != 0) {
|
||||||
|
String error = "Attenzione il mese richiesto non è valido per la rendicontazione.";
|
||||||
|
logger.error(error);
|
||||||
|
throw new Exception(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private YearMonth nextMonthToSend() throws Exception {
|
||||||
|
Optional<TimeCardsReporting> lastTcR = timeCardsReportingService.getLastTimeCardsReporting();
|
||||||
|
if (!lastTcR.isPresent()) {
|
||||||
|
String error = "Invalid TimeCardsReporting start point, no value found.";
|
||||||
|
logger.error(error);
|
||||||
|
throw new Exception(error);
|
||||||
|
}
|
||||||
|
Integer latestY = lastTcR.get().getYear();
|
||||||
|
Integer latestM = lastTcR.get().getMonth();
|
||||||
|
|
||||||
|
YearMonth nextMonthToSent = YearMonth.of(latestY, latestM);
|
||||||
|
nextMonthToSent = nextMonthToSent.plusMonths(1);
|
||||||
|
return nextMonthToSent;
|
||||||
|
}
|
||||||
|
|
||||||
private void checkFiscalCode(EPASPersons[] validatedPersons) throws Exception {
|
private void checkFiscalCode(EPASPersons[] validatedPersons) throws Exception {
|
||||||
if (validatedPersons != null && validatedPersons.length > 0) {
|
if (validatedPersons != null && validatedPersons.length > 0) {
|
||||||
ArrayList<String> personsWithInvalidFiscalCode = new ArrayList<>();
|
ArrayList<String> personsWithInvalidFiscalCode = new ArrayList<>();
|
||||||
|
@ -1031,9 +1258,8 @@ public class SyncService {
|
||||||
boolean foundLavoroFuoriSede = false;
|
boolean foundLavoroFuoriSede = false;
|
||||||
boolean foundMotiviDiServizio = false;
|
boolean foundMotiviDiServizio = false;
|
||||||
for (EPASStampings epasStamping : epasPersonDay.getStampings()) {
|
for (EPASStampings epasStamping : epasPersonDay.getStampings()) {
|
||||||
if (epasStamping.getStampType()!=null&&
|
if (epasStamping.getStampType() != null && !epasStamping.getStampType().isEmpty()) {
|
||||||
!epasStamping.getStampType().isEmpty()) {
|
switch (epasStamping.getStampType()) {
|
||||||
switch(epasStamping.getStampType()) {
|
|
||||||
case "lavoroFuoriSede":
|
case "lavoroFuoriSede":
|
||||||
foundLavoroFuoriSede = true;
|
foundLavoroFuoriSede = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import io.github.jhipster.web.util.HeaderUtil;
|
import io.github.jhipster.web.util.HeaderUtil;
|
||||||
import io.github.jhipster.web.util.ResponseUtil;
|
import io.github.jhipster.web.util.ResponseUtil;
|
||||||
|
import it.cnr.isti.epasmed.epas.model.EPASOffSiteWorks;
|
||||||
import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
|
import it.cnr.isti.epasmed.epas.model.EPASPersonDays;
|
||||||
import it.cnr.isti.epasmed.epas.service.EPASOffSiteWorksService;
|
import it.cnr.isti.epasmed.epas.service.EPASOffSiteWorksService;
|
||||||
|
|
||||||
|
@ -87,10 +88,10 @@ public class EPASOffSiteWorksResource {
|
||||||
* the EPAS Off Site Works List, or with status {@code 404 (Not Found)}.
|
* the EPAS Off Site Works List, or with status {@code 404 (Not Found)}.
|
||||||
*/
|
*/
|
||||||
@GetMapping("/offsiteworks/byOffice")
|
@GetMapping("/offsiteworks/byOffice")
|
||||||
public ResponseEntity<List<EPASPersonDays>> getOffSiteWorksByOffice(@RequestParam("codeId") String id,
|
public ResponseEntity<List<EPASOffSiteWorks>> getOffSiteWorksByOffice(@RequestParam("codeId") String id,
|
||||||
@RequestParam("year") String year, @RequestParam("month") String month) {
|
@RequestParam("year") String year, @RequestParam("month") String month) {
|
||||||
log.info("REST request to get ePAS Off Site Works list: officeCodeId={}, year={}, month={}", id,year,month);
|
log.info("REST request to get ePAS Off Site Works list: officeCodeId={}, year={}, month={}", id,year,month);
|
||||||
List<EPASPersonDays> epasOffSiteWorksList = epasOffSiteWorksService.getListByOfficeCodeId(id, year, month);
|
List<EPASOffSiteWorks> epasOffSiteWorksList = epasOffSiteWorksService.getListByOfficeCodeId(id, year, month);
|
||||||
return ResponseUtil.wrapOrNotFound(Optional.of(epasOffSiteWorksList));
|
return ResponseUtil.wrapOrNotFound(Optional.of(epasOffSiteWorksList));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import io.github.jhipster.web.util.HeaderUtil;
|
import io.github.jhipster.web.util.HeaderUtil;
|
||||||
|
@ -66,10 +67,14 @@ public class SyncResource {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@code GET /sync/writes} : Retrieve new flux from ePAS and
|
* {@code GET /sync/writes} : Report from ePAS and
|
||||||
* update SistemaInformativo.
|
* update SistemaInformativo.
|
||||||
*
|
*
|
||||||
|
* @param year the year.
|
||||||
|
* @param month the month.
|
||||||
* @return the {@link ResponseEntity} with status {@code 201 (Executed)}
|
* @return the {@link ResponseEntity} with status {@code 201 (Executed)}
|
||||||
* or with status {@code 400 (Bad Request)} if there is a error.
|
* or with status {@code 400 (Bad Request)} if there is a error.
|
||||||
*
|
*
|
||||||
|
@ -77,20 +82,51 @@ public class SyncResource {
|
||||||
*/
|
*/
|
||||||
@GetMapping("/sync/writes")
|
@GetMapping("/sync/writes")
|
||||||
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
|
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
|
||||||
public ResponseEntity<Void> syncWrites() throws URISyntaxException {
|
public ResponseEntity<Void> syncWrites(@RequestParam("year") String year,
|
||||||
logger.info("REST request syncWrites)");
|
@RequestParam("month") String month) throws URISyntaxException {
|
||||||
|
logger.info("REST request syncWrites");
|
||||||
|
|
||||||
ResponseEntity<Void> res;
|
ResponseEntity<Void> res;
|
||||||
try {
|
try {
|
||||||
syncService.executeWrites();
|
syncService.executeWrites(year,month);
|
||||||
String msg="Sincronizzazione delle scritture eseguita correttamente.";
|
String msg="Rendicontazione eseguita correttamente.";
|
||||||
logger.info(msg);
|
logger.info(msg);
|
||||||
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
||||||
msg,"")).build();
|
msg,"")).build();
|
||||||
|
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
logger.error("Errore nella sincronizzazione delle scritture: {}", e.getLocalizedMessage(), e);
|
logger.error("Errore nella rendicontazione: {}", e.getLocalizedMessage(), e);
|
||||||
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
||||||
"Errore nella sincronizzazione delle scritture: {}", e.getLocalizedMessage())).build();
|
"Errore nella rendicontazione: {}", e.getLocalizedMessage())).build();
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@code GET /sync/writesOrario} : Report Orario from ePAS and
|
||||||
|
* update SistemaInformativo.
|
||||||
|
*
|
||||||
|
* @return the {@link ResponseEntity} with status {@code 201 (Executed)}
|
||||||
|
* or with status {@code 400 (Bad Request)} if there is a error.
|
||||||
|
*
|
||||||
|
|
||||||
|
*/
|
||||||
|
@GetMapping("/sync/writesOrario")
|
||||||
|
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
|
||||||
|
public ResponseEntity<Void> syncWritesOrario() throws URISyntaxException {
|
||||||
|
logger.info("REST request syncWritesOrario)");
|
||||||
|
ResponseEntity<Void> res;
|
||||||
|
try {
|
||||||
|
syncService.executeWritesOrario();
|
||||||
|
String msg="Rendicontazione dell'orario eseguita correttamente.";
|
||||||
|
logger.info(msg);
|
||||||
|
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
||||||
|
msg,"")).build();
|
||||||
|
|
||||||
|
} catch (Throwable e) {
|
||||||
|
logger.error("Errore nella rendicontazione dell'orario: {}", e.getLocalizedMessage(), e);
|
||||||
|
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
||||||
|
"Errore nella rendicontazione dell'orario: {}", e.getLocalizedMessage())).build();
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -100,6 +136,8 @@ public class SyncResource {
|
||||||
* {@code GET /sync/writesTimeCards} : Reports TimeCards from ePAS
|
* {@code GET /sync/writesTimeCards} : Reports TimeCards from ePAS
|
||||||
* in SistemaInformativo.
|
* in SistemaInformativo.
|
||||||
*
|
*
|
||||||
|
* @param year the year.
|
||||||
|
* @param month the month.
|
||||||
* @return the {@link ResponseEntity} with status {@code 201 (Executed)}
|
* @return the {@link ResponseEntity} with status {@code 201 (Executed)}
|
||||||
* or with status {@code 400 (Bad Request)} if there is a error.
|
* or with status {@code 400 (Bad Request)} if there is a error.
|
||||||
*
|
*
|
||||||
|
@ -107,11 +145,12 @@ public class SyncResource {
|
||||||
*/
|
*/
|
||||||
@GetMapping("/sync/writesTimeCards")
|
@GetMapping("/sync/writesTimeCards")
|
||||||
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
|
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
|
||||||
public ResponseEntity<Void> syncTimeCardsWrites() throws URISyntaxException {
|
public ResponseEntity<Void> syncWritesTimeCards(@RequestParam("year") String year,
|
||||||
logger.info("REST request syncWrites)");
|
@RequestParam("month") String month) throws URISyntaxException {
|
||||||
|
logger.info("REST request syncWritesTimeCards)");
|
||||||
ResponseEntity<Void> res;
|
ResponseEntity<Void> res;
|
||||||
try {
|
try {
|
||||||
syncService.executeTimeCardsWrites();
|
syncService.executeWritesTimeCards(year,month);
|
||||||
String msg="Rendicontazione dei cartellini eseguita correttamente.";
|
String msg="Rendicontazione dei cartellini eseguita correttamente.";
|
||||||
logger.info(msg);
|
logger.info(msg);
|
||||||
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
||||||
|
@ -125,4 +164,36 @@ public class SyncResource {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@code GET /sync/writesOffSiteWorks} : Reports Off Site Works from ePAS
|
||||||
|
* in SistemaInformativo.
|
||||||
|
*
|
||||||
|
* @param year the year.
|
||||||
|
* @param month the month.
|
||||||
|
* @return the {@link ResponseEntity} with status {@code 201 (Executed)}
|
||||||
|
* or with status {@code 400 (Bad Request)} if there is a error.
|
||||||
|
*
|
||||||
|
|
||||||
|
*/
|
||||||
|
@GetMapping("/sync/writesOffSiteWorks")
|
||||||
|
@PreAuthorize("hasAuthority(\"" + AuthoritiesConstants.ADMIN + "\")")
|
||||||
|
public ResponseEntity<Void> syncWritesOffSiteWorks(@RequestParam("year") String year,
|
||||||
|
@RequestParam("month") String month) throws URISyntaxException {
|
||||||
|
logger.info("REST request syncWritesOffSiteWorks)");
|
||||||
|
ResponseEntity<Void> res;
|
||||||
|
try {
|
||||||
|
syncService.executeWriteOffSiteWorks(year,month);
|
||||||
|
String msg="Rendicontazione del lavoro fuori sede eseguita correttamente.";
|
||||||
|
logger.info(msg);
|
||||||
|
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
||||||
|
msg,"")).build();
|
||||||
|
|
||||||
|
} catch (Throwable e) {
|
||||||
|
logger.error("Errore nella rendicontazione del lavoro fuori sede: {}", e.getLocalizedMessage(), e);
|
||||||
|
res=ResponseEntity.noContent().headers(HeaderUtil.createAlert(applicationName,
|
||||||
|
"Errore nella rendicontazione del lavoro fuori sede: {}", e.getLocalizedMessage())).build();
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,11 @@
|
||||||
|
|
||||||
<p>Sync Sistema Informativo ed ePAS.</p>
|
<p>Sync Sistema Informativo ed ePAS.</p>
|
||||||
|
|
||||||
|
|
||||||
<div class="d-grid gap-2 d-md-block">
|
<div class="d-grid gap-2 d-md-block">
|
||||||
|
<ngb-datepicker (navigate)="dateNavigate($event)"
|
||||||
|
[showWeekdays]="false" class="datepicker-only-month-select"></ngb-datepicker>
|
||||||
|
|
||||||
<button class="btn btn-primary" type="button" [disabled]="isLoading"
|
<button class="btn btn-primary" type="button" [disabled]="isLoading"
|
||||||
(click)="sync('reads')">Reads</button>
|
(click)="sync('reads')">Reads</button>
|
||||||
<button class="btn btn-primary" type="button" [disabled]="isLoading"
|
<button class="btn btn-primary" type="button" [disabled]="isLoading"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { NgbDatepickerNavigateEvent } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
|
||||||
import { SyncType } from './sync.model';
|
import { SyncType } from './sync.model';
|
||||||
import { SyncService } from './sync.service';
|
import { SyncService } from './sync.service';
|
||||||
|
@ -9,19 +10,36 @@ import { SyncService } from './sync.service';
|
||||||
})
|
})
|
||||||
export class SyncComponent implements OnInit {
|
export class SyncComponent implements OnInit {
|
||||||
syncT: SyncType | null = null;
|
syncT: SyncType | null = null;
|
||||||
|
year: number;
|
||||||
|
month: number;
|
||||||
isLoading = false; // hidden by default
|
isLoading = false; // hidden by default
|
||||||
|
|
||||||
constructor(private syncService: SyncService) {}
|
constructor(private syncService: SyncService) {
|
||||||
|
const date: Date = new Date();
|
||||||
|
this.year = date.getFullYear();
|
||||||
|
this.month = date.getMonth();
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit(): void {}
|
ngOnInit(): void {}
|
||||||
|
|
||||||
sync(syncType: SyncType): void {
|
sync(syncType: SyncType): void {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
this.syncT = syncType;
|
this.syncT = syncType;
|
||||||
this.syncService.sync(syncType).subscribe(
|
if (this.year == null || this.year <= 0) {
|
||||||
() => this.onSuccess(),
|
// eslint-disable-next-line no-console
|
||||||
() => this.onError()
|
console.log('Select the year');
|
||||||
);
|
return;
|
||||||
|
}
|
||||||
|
if (this.month == null || this.month <= 0) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.log('Select the month');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// this.syncService.sync(syncType, this.year,this.month).subscribe(
|
||||||
|
// () => this.onSuccess(),
|
||||||
|
// () => this.onError()
|
||||||
|
// );
|
||||||
}
|
}
|
||||||
|
|
||||||
private onSuccess(): void {
|
private onSuccess(): void {
|
||||||
|
@ -32,5 +50,16 @@ export class SyncComponent implements OnInit {
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dateNavigate($event: NgbDatepickerNavigateEvent): void {
|
||||||
|
this.year = $event.next.year;
|
||||||
|
this.month = $event.next.month;
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.log(this.year);
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.log(this.month);
|
||||||
|
|
||||||
|
// old value is contained in $event.current
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { SyncType } from './sync.model';
|
||||||
export class SyncService {
|
export class SyncService {
|
||||||
constructor(private http: HttpClient) {}
|
constructor(private http: HttpClient) {}
|
||||||
|
|
||||||
sync(syncType: SyncType): Observable<{}> {
|
sync(syncType: SyncType, year: number, month: number): Observable<{}> {
|
||||||
return this.http.get(SERVER_API_URL + 'api/sync/' + syncType);
|
return this.http.get(SERVER_API_URL + 'api/sync/' + syncType + '?year=' + year + '&month=' + month);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<title>epasmed</title>
|
<title>ePASMed</title>
|
||||||
<meta name="description" content="Description for epasmed">
|
<meta name="description" content="Description for epasmed">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
<meta name="theme-color" content="#000000">
|
<meta name="theme-color" content="#000000">
|
||||||
|
|
|
@ -24,7 +24,7 @@ import it.cnr.isti.epasmed.security.AuthoritiesConstants;
|
||||||
@AutoConfigureMockMvc
|
@AutoConfigureMockMvc
|
||||||
@WithMockUser(authorities = AuthoritiesConstants.ADMIN)
|
@WithMockUser(authorities = AuthoritiesConstants.ADMIN)
|
||||||
@SpringBootTest(classes = EpasmedApp.class)
|
@SpringBootTest(classes = EpasmedApp.class)
|
||||||
@EnabledIf("false")
|
@EnabledIf("true")
|
||||||
public class EPASOffSiteWorksResourceIT {
|
public class EPASOffSiteWorksResourceIT {
|
||||||
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
|
@ -24,10 +24,12 @@ import it.cnr.isti.epasmed.security.AuthoritiesConstants;
|
||||||
@AutoConfigureMockMvc
|
@AutoConfigureMockMvc
|
||||||
@WithMockUser(authorities = AuthoritiesConstants.ADMIN)
|
@WithMockUser(authorities = AuthoritiesConstants.ADMIN)
|
||||||
@SpringBootTest(classes = EpasmedApp.class)
|
@SpringBootTest(classes = EpasmedApp.class)
|
||||||
@EnabledIf("false")
|
@EnabledIf("true")
|
||||||
public class SyncResourceIT {
|
public class SyncResourceIT {
|
||||||
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
private static final String YEAR="2022";
|
||||||
|
private static final String MONTH="6";
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -54,13 +56,25 @@ public class SyncResourceIT {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void syncWrites() throws Exception {
|
public void syncWrites() throws Exception {
|
||||||
restSyncMockMvc.perform(get("/api/sync/writes"))
|
restSyncMockMvc.perform(get("/api/sync/writes?year="+YEAR+"&month="+MONTH))
|
||||||
.andExpect(status().is2xxSuccessful());
|
.andExpect(status().is2xxSuccessful());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void syncTimeCardsWrites() throws Exception {
|
public void syncWritesOrario() throws Exception {
|
||||||
restSyncMockMvc.perform(get("/api/sync/writesTimeCards"))
|
restSyncMockMvc.perform(get("/api/sync/writesOrario"))
|
||||||
|
.andExpect(status().is2xxSuccessful());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void syncWritesTimeCards() throws Exception {
|
||||||
|
restSyncMockMvc.perform(get("/api/sync/writesTimeCards?year="+YEAR+"&month="+MONTH))
|
||||||
|
.andExpect(status().is2xxSuccessful());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void syncWritesOffSiteWorks() throws Exception {
|
||||||
|
restSyncMockMvc.perform(get("/api/sync/writesOffSiteWorks?year="+YEAR+"&month="+MONTH))
|
||||||
.andExpect(status().is2xxSuccessful());
|
.andExpect(status().is2xxSuccessful());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue