#120 use loading from kias

This commit is contained in:
T-Midnight 2019-05-22 15:16:20 +04:00
parent c21739bfc6
commit 5f214620bf
2 changed files with 47 additions and 2 deletions

View File

@ -27,4 +27,26 @@ public class GrantScheduler {
grantNotificationService.sendDeadlineNotifications(grantService.findAll(), IS_DEADLINE_NOTIFICATION_BEFORE_WEEK);
log.debug("GrantScheduler.checkDeadlineBeforeWeek finished");
}
@Scheduled(cron = "0 0 8 1 * ?", zone = "Europe/Samara")
public void loadGrantsFromKias() {
log.debug("GrantScheduler.loadGrantsFromKias started");
//
// Метод для сохранения загруженных грантов
//
// List<GrantDto> grants = IndexKiasTest.getNewGrantsDto();
// grants.forEach(grantDto -> {
// try {
// if (grantService.saveFromKias(grantDto)) {
// log.debug("GrantScheduler.loadGrantsFromKias new grant was loaded");
// } else {
// log.debug("GrantScheduler.loadGrantsFromKias grant wasn't loaded, cause it's already exists");
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
// });
log.debug("GrantScheduler.loadGrantsFromKias finished");
}
}

View File

@ -189,16 +189,31 @@ public class GrantService extends BaseService {
if (errors.hasErrors()) {
return false;
}
if (isEmpty(grantDto.getId())) {
create(grantDto);
} else {
update(grantDto);
}
return true;
}
public boolean saveFromKias(GrantDto grantDto) throws IOException {
grantDto.setName(grantDto.getTitle());
String title = checkUniqueName(grantDto, grantDto.getId()); //проверка уникальности имени
if (title != null) {
Grant grantFromDB = grantRepository.findByTitle(title); //грант с таким же названием из бд
if (checkSameDeadline(grantDto, grantFromDB.getId())) { //если дедайны тоже совпадают
return false;
} else { //иначе грант уже был в системе, но в другом году, поэтому надо создать
create(grantDto);
return true;
}
} else { //иначе такого гранта ещё нет, поэтому надо создать
create(grantDto);
return true;
}
}
private void checkEmptyLeader(GrantDto grantDto, Errors errors) {
if (grantDto.getLeaderId().equals(-1)) {
errors.rejectValue("leaderId", "errorCode", "Укажите руководителя");
@ -211,6 +226,14 @@ public class GrantService extends BaseService {
}
}
private boolean checkSameDeadline(GrantDto grantDto, Integer id) {
Date date = grantDto.getDeadlines().get(0).getDate(); //дата с сайта киас
if (deadlineService.findByGrantIdAndDate(id, date).compareTo(date) == 0) { //если есть такая строка с датой
return true;
}
return false;
}
public List<User> getGrantAuthors(GrantDto grantDto) {
List<User> filteredUsers = userService.filterByAgeAndDegree(grantDto.isHasAge(), grantDto.isHasDegree());
if (grantDto.isWasLeader()) {