From c2af1bddc470f317b27c6f6ec7b242d8a6e2df4f Mon Sep 17 00:00:00 2001 From: harish Date: Mon, 11 Nov 2024 13:00:44 +0530 Subject: [PATCH] Fixed issue with application approval in application evaluation --- .../dao/ApplicationEvaluationDao.java | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 81aa20a1..636b0570 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -458,12 +458,16 @@ public class ApplicationEvaluationDao { private List processCriteria(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { - List existingCriteriaList = entity.getCriteria() != null ? Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() { - }) : new ArrayList<>(); + List incomingCriteriaList = Optional.ofNullable(req.getCriteria()).orElse(new ArrayList<>()); - Map existingCriteriaMap = existingCriteriaList.stream().collect(Collectors.toMap(CriteriaResponse::getId, criteria -> criteria)); + List existingCriteriaList = entity.getCriteria() != null ? + Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() {}) : + new ArrayList<>(); - List updatedCriteriaList = req.getCriteria().stream().map(incoming -> { + Map existingCriteriaMap = existingCriteriaList.stream() + .collect(Collectors.toMap(CriteriaResponse::getId, criteria -> criteria)); + + List updatedCriteriaList = incomingCriteriaList.stream().map(incoming -> { CriteriaRequest request = new CriteriaRequest(); request.setId(incoming.getId()); request.setScore(incoming.getScore()); @@ -471,14 +475,15 @@ public class ApplicationEvaluationDao { CriteriaResponse existingCriteria = existingCriteriaMap.get(incoming.getId()); if (existingCriteria != null) { - request.setScore(incoming.getScore() != null ? incoming.getScore() : null); - request.setValid(incoming.getValid() != null ? incoming.getValid() : null); + request.setScore(incoming.getScore() != null ? incoming.getScore() : existingCriteria.getScore()); + request.setValid(incoming.getValid() != null ? incoming.getValid() : existingCriteria.getValid()); } return request; }).collect(Collectors.toList()); List missingCriteriaRequests = existingCriteriaList.stream() - .filter(existing -> !updatedCriteriaList.stream().map(CriteriaRequest::getId).toList().contains(existing.getId())).map(existing -> { + .filter(existing -> !updatedCriteriaList.stream().map(CriteriaRequest::getId).toList().contains(existing.getId())) + .map(existing -> { CriteriaRequest request = new CriteriaRequest(); request.setId(existing.getId()); request.setScore(existing.getScore()); @@ -492,58 +497,65 @@ public class ApplicationEvaluationDao { private List processChecklist(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { + List incomingChecklistList = Optional.ofNullable(req.getChecklist()).orElse(new ArrayList<>()); + List existingChecklistList = entity.getChecklist() != null ? - Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() { - }) : + Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() {}) : new ArrayList<>(); - Map existingChecklistMap = existingChecklistList.stream().collect(Collectors.toMap(ChecklistResponse::getId, checklist -> checklist)); + Map existingChecklistMap = existingChecklistList.stream() + .collect(Collectors.toMap(ChecklistResponse::getId, checklist -> checklist)); - List updatedChecklistList = req.getChecklist().stream().map(incoming -> { + List updatedChecklistList = incomingChecklistList.stream().map(incoming -> { ChecklistRequest request = new ChecklistRequest(); request.setId(incoming.getId()); request.setValid(incoming.getValid()); ChecklistResponse existingChecklist = existingChecklistMap.get(incoming.getId()); if (existingChecklist != null && incoming.getValid() == null) { - request.setValid(null); + request.setValid(existingChecklist.getValid()); } return request; }).collect(Collectors.toList()); List missingChecklistRequests = existingChecklistList.stream() - .filter(existing -> !updatedChecklistList.stream().map(ChecklistRequest::getId).toList().contains(existing.getId())).map(existing -> { + .filter(existing -> !updatedChecklistList.stream().map(ChecklistRequest::getId).toList().contains(existing.getId())) + .map(existing -> { ChecklistRequest request = new ChecklistRequest(); request.setId(existing.getId()); - request.setValid(existing.getValid() != null ? existing.getValid() : null); + request.setValid(existing.getValid()); return request; }).toList(); updatedChecklistList.addAll(missingChecklistRequests); return updatedChecklistList; } - private List processField(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { - List existingFieldList = entity.getFile() != null ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() { - }) : new ArrayList<>(); + List incomingFieldList = Optional.ofNullable(req.getFiles()).orElse(new ArrayList<>()); - Map existingFieldMap = existingFieldList.stream().collect(Collectors.toMap(FieldResponse::getId, field -> field)); + List existingFieldList = entity.getFile() != null ? + Utils.convertJsonToList(entity.getFile(), new TypeReference>() {}) : + new ArrayList<>(); - List updatedFieldList = req.getFiles().stream().map(incoming -> { + Map existingFieldMap = existingFieldList.stream() + .collect(Collectors.toMap(FieldResponse::getId, field -> field)); + + List updatedFieldList = incomingFieldList.stream().map(incoming -> { FieldRequest request = new FieldRequest(); request.setId(incoming.getId()); request.setValid(incoming.getValid()); FieldResponse existingField = existingFieldMap.get(incoming.getId()); if (existingField != null) { - request.setValid(incoming.getValid() != null ? incoming.getValid() : null); + request.setValid(incoming.getValid() != null ? incoming.getValid() : existingField.getValid()); } return request; }).collect(Collectors.toList()); List missingFieldRequests = existingFieldList.stream() - .filter(existing -> !updatedFieldList.stream().map(FieldRequest::getId).toList().contains(existing.getId())).map(existing -> { + .filter(existing -> !updatedFieldList.stream().map(FieldRequest::getId).toList().contains(existing.getId())) + .map(existing -> { FieldRequest request = new FieldRequest(); request.setId(existing.getId()); request.setValid(existing.getValid());