diff --git a/src/main/java/com/revealprecision/revealserver/messaging/listener/HdssProcessingListener.java b/src/main/java/com/revealprecision/revealserver/messaging/listener/HdssProcessingListener.java index 524b8ebc..cbfb90d2 100644 --- a/src/main/java/com/revealprecision/revealserver/messaging/listener/HdssProcessingListener.java +++ b/src/main/java/com/revealprecision/revealserver/messaging/listener/HdssProcessingListener.java @@ -6,7 +6,6 @@ import com.fasterxml.jackson.databind.ObjectReader; import com.revealprecision.revealserver.api.v1.controller.querying.KafkaGenerateIndividualTasksController.ListObj; import com.revealprecision.revealserver.enums.ActionTitleEnum; -import com.revealprecision.revealserver.enums.TaskGenerateRequestValidationStateEnum; import com.revealprecision.revealserver.integration.mail.EmailService; import com.revealprecision.revealserver.messaging.message.EventTrackerMessage; import com.revealprecision.revealserver.persistence.domain.Action; @@ -28,7 +27,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Profile; -import org.springframework.data.util.Pair; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -157,7 +155,6 @@ public void etl(EventTrackerMessage eventTrackerMessage) { List.of(indexIndividualId), targetPlan, actions, ActionTitleEnum.INDEX_CASE_MEMBER)); - } } } @@ -218,11 +215,10 @@ protected void submitTasks(String owner, List entityIds, UUID planIdentifi if (optionalAction.isPresent()) { ListObj uuidsObj = new ListObj(); uuidsObj.setUuids(entityIds); - Pair>> stringMapPair = taskService.generateIndividualTaskWithOwner( + taskService.generateIndividualTaskWithOwnerDirect( planIdentifier, optionalAction.get().getIdentifier(), uuidsObj, owner); -// log.debug("stringMapPair {}",stringMapPair); } } diff --git a/src/main/java/com/revealprecision/revealserver/service/TaskService.java b/src/main/java/com/revealprecision/revealserver/service/TaskService.java index 4de0877a..eb877322 100644 --- a/src/main/java/com/revealprecision/revealserver/service/TaskService.java +++ b/src/main/java/com/revealprecision/revealserver/service/TaskService.java @@ -273,7 +273,7 @@ public void processPlanUpdatePerActionForTasks(Action action, Plan plan, String } - public Map> validateImportedLocationsForTaskGeneration( + public Map> validateImportedLocationsForTaskGenerationDirect( List suppliedLocationUuidList, Action action, Plan plan) { List uuidsThatShouldBeInPlan = getUuidsForTaskGeneration(action, plan, null); @@ -312,6 +312,45 @@ public Map> validateImportedL } + public Map> validateImportedLocationsForTaskGeneration( + List suppliedLocationUuidList, Action action, Plan plan) { + List uuidsThatShouldBeInPlan = getUuidsForTaskGeneration(action, plan, null); + + List existingTaskUuids = taskRepository.findUniqueByPlanAndActionidentifier( + plan, action.getIdentifier()) + .stream().map( + existingTask -> new TaskProjectionObj(existingTask.getIdentifier(), + existingTask.getBaseEntityIdentifier())) + .map(TaskProjectionObj::getBaseIdentifier) + .map(UUID::fromString) + .collect( + Collectors.toList()); + + List alreadyExistingTasks = new ArrayList<>(uuidsThatShouldBeInPlan); + alreadyExistingTasks.retainAll(existingTaskUuids); + List requestedButExisting = new ArrayList<>(suppliedLocationUuidList); + requestedButExisting.retainAll(alreadyExistingTasks); + + List alreadyExistingTasksCanGenerate = new ArrayList<>(uuidsThatShouldBeInPlan); + alreadyExistingTasksCanGenerate.removeAll(existingTaskUuids); + List canGenerate = new ArrayList<>(suppliedLocationUuidList); + canGenerate.retainAll(alreadyExistingTasksCanGenerate); + + List shouldNotGenerateList = new ArrayList<>(suppliedLocationUuidList); + shouldNotGenerateList.removeAll(uuidsThatShouldBeInPlan); + + List alreadyExistingTasksShouldBeCreated = new ArrayList<>(uuidsThatShouldBeInPlan); + alreadyExistingTasksShouldBeCreated.removeAll(existingTaskUuids); + alreadyExistingTasksShouldBeCreated.removeAll(suppliedLocationUuidList); + + return Map.of(TaskGenerateRequestValidationStateEnum.ALREADY_EXISTING, requestedButExisting, + TaskGenerateRequestValidationStateEnum.CAN_GENERATE, canGenerate, + TaskGenerateRequestValidationStateEnum.NOT_IN_PLAN, shouldNotGenerateList, + TaskGenerateRequestValidationStateEnum.SHOULD_GENERATE_BUT_NOT_REQUESTED, + alreadyExistingTasksShouldBeCreated); + + } + public Pair>> generateIndividualTask( UUID planIdentifier, UUID actionIdentifier, ListObj uuidsObj) { @@ -373,6 +412,24 @@ public Pair>> gen } + public void generateIndividualTaskWithOwnerDirect( + UUID planIdentifier, + UUID actionIdentifier, ListObj uuidsObj, String owner) { + Action action = actionService.getByIdentifier(actionIdentifier); + + Plan plan = action.getGoal().getPlan(); + + List uuids = uuidsObj.getUuids(); + + + ProcessTracker newProcessTracker = processTrackerService.createProcessTracker( + UUID.randomUUID(), + ProcessType.INDIVIDUAL_TASK_GENERATE, planIdentifier); + + log.debug("running process tracker"); + processLocationListForTasks(action, plan,owner , + newProcessTracker, uuids, true, false, false); + } public void processLocationListForTasks(Action action, Plan plan, String ownerId, ProcessTracker processTracker, List uuids, boolean generate, boolean reactivate,