Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…CH-GRADUATION-API into develop/alex-GRAD2-1951

# Conflicts:
#	api/src/main/java/ca/bc/gov/educ/api/batchgraduation/listener/UserReqDistributionRunCompletionNotificationListener.java
#	api/src/main/java/ca/bc/gov/educ/api/batchgraduation/reader/DistributionRunPartitioner.java
  • Loading branch information
arybakov-cgi committed Sep 7, 2023
2 parents 90e5fd9 + ca006eb commit 0ba0e63
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import ca.bc.gov.educ.api.batchgraduation.service.GraduationReportService;
import ca.bc.gov.educ.api.batchgraduation.service.ParallelDataFetch;
import ca.bc.gov.educ.api.batchgraduation.service.TaskSchedulingService;
import org.apache.commons.lang3.StringUtils;
import ca.bc.gov.educ.api.batchgraduation.util.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -77,6 +78,10 @@ public void afterJob(JobExecution jobExecution) {

ResponseObj obj = restUtils.getTokenResponseObject();
LOGGER.info("Starting Report Process " + LOG_SEPARATION_SINGLE);
if(StringUtils.isNotBlank(studentSearchRequest)) {
StudentSearchRequest payload = (StudentSearchRequest)jsonTransformer.unmarshall(studentSearchRequest, StudentSearchRequest.class);
summaryDTO.setStudentSearchRequest(payload);
}
processGlobalList(summaryDTO,jobExecutionId,credentialType,obj.getAccess_token(),localDownLoad,properName);

DistributionSummaryDTO finalSummaryDTO = summaryDTO;
Expand Down Expand Up @@ -134,7 +139,7 @@ private void processGlobalList(DistributionSummaryDTO summaryDTO, Long batchId,
activityCode = credentialType.equalsIgnoreCase("OT")?"USERDISTOT":"USERDISTRC";
}
if(!cList.isEmpty()) {
DistributionRequest distributionRequest = DistributionRequest.builder().mapDist(mapDist).activityCode(activityCode).build();
DistributionRequest distributionRequest = DistributionRequest.builder().mapDist(mapDist).activityCode(activityCode).studentSearchRequest(summaryDTO.getStudentSearchRequest()).build();
if (credentialType.equalsIgnoreCase("RC")) {
disres = restUtils.createReprintAndUpload(batchId, accessToken, distributionRequest, activityCode, localDownload);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ public class StudentSearchRequest implements Serializable {
private List<String> pens;
private List<String> programs;

private String user;

@JsonFormat(pattern = "yyyy-MM-dd")
Date gradDateFrom;
@JsonFormat(pattern = "yyyy-MM-dd")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,4 +238,14 @@ void filterByStudentSearchRequest(List<StudentCredentialDistribution> eligibleSt
eligibleStudentSchoolDistricts.removeIf(scr->!searchRequest.getPens().contains(scr.getPen()));
}
}

void filterOutDeceasedStudents(List<StudentCredentialDistribution> credentialList) {
LOGGER.debug("Total size of credential list: {}", credentialList.size());
List<UUID> deceasedIDs = restUtils.getDeceasedStudentIDs(credentialList.stream().map(StudentCredentialDistribution::getStudentID).distinct().toList(), restUtils.getAccessToken());
if (!deceasedIDs.isEmpty()) {
LOGGER.debug("Deceased students: {}", deceasedIDs.size());
credentialList.removeIf(cr -> deceasedIDs.contains(cr.getStudentID()));
LOGGER.debug("Revised size of credential list: {}", credentialList.size());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,7 @@ public Map<String, ExecutionContext> partition(int gridSize) {
diff = (endTime - startTime)/1000;
logger.debug("Total {} eligible StudentCredentialDistributions found in {} sec", credentialList.size(), diff);
if(!credentialList.isEmpty()) {
// Filter deceased students out
List<UUID> deceasedIDs = restUtils.getDeceasedStudentIDs(credentialList.stream().map(StudentCredentialDistribution::getStudentID).distinct().toList(), restUtils.getAccessToken());
if (!deceasedIDs.isEmpty()) {
logger.debug("Deceased students: {}", deceasedIDs.size());
credentialList.removeIf(cr -> deceasedIDs.contains(cr.getStudentID()));
logger.debug("Revised size of credential list: {}", credentialList.size());
}
filterOutDeceasedStudents(credentialList);
updateBatchJobHistory(createBatchJobHistory(), (long) credentialList.size());
return getStringExecutionContextMap(gridSize, credentialList, null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,7 @@
import org.springframework.beans.factory.annotation.Value;
import reactor.core.publisher.Mono;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;

public class DistributionRunSupplementalPartitioner extends BasePartitioner {

Expand Down Expand Up @@ -53,6 +50,7 @@ public Map<String, ExecutionContext> partition(int gridSize) {
logger.debug("Total {} eligible StudentCredentialDistributions found in {} sec", eligibleStudentSchoolDistricts.size(), diff);
filterByStudentSearchRequest(eligibleStudentSchoolDistricts);
if(!eligibleStudentSchoolDistricts.isEmpty()) {
filterOutDeceasedStudents(eligibleStudentSchoolDistricts);
updateBatchJobHistory(createBatchJobHistory(), (long) eligibleStudentSchoolDistricts.size());
return getStringExecutionContextMap(gridSize, eligibleStudentSchoolDistricts, null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,18 @@ public Map<String, ExecutionContext> partition(int gridSize) {
}
}
if(searchRequest != null && searchRequest.getDistricts() != null && !searchRequest.getDistricts().isEmpty()) {
eligibleStudentSchoolDistricts.removeIf(scr->!searchRequest.getDistricts().contains(StringUtils.substring(scr, 0, 3)));
if(!eligibleStudentSchoolDistricts.isEmpty()) {
eligibleStudentSchoolDistricts.removeIf(scr -> !searchRequest.getDistricts().contains(StringUtils.substring(scr, 0, 3)));
} else {
eligibleStudentSchoolDistricts = searchRequest.getDistricts();
}
}
if(searchRequest != null && searchRequest.getSchoolOfRecords() != null && !searchRequest.getSchoolOfRecords().isEmpty()) {
eligibleStudentSchoolDistricts.removeIf(scr->!searchRequest.getSchoolOfRecords().contains(scr));
if(!eligibleStudentSchoolDistricts.isEmpty()) {
eligibleStudentSchoolDistricts.removeIf(scr -> !searchRequest.getSchoolOfRecords().contains(scr));
} else {
eligibleStudentSchoolDistricts = searchRequest.getSchoolOfRecords();
}
}
endTime = System.currentTimeMillis();
diff = (endTime - startTime)/1000;
Expand Down

0 comments on commit 0ba0e63

Please sign in to comment.