Resolve RED-9717 #700
@ -308,7 +308,7 @@ public class StatusController implements StatusResource {
|
||||
|
||||
accessControlService.checkAccessPermissionsToDossier(dossierId);
|
||||
accessControlService.verifyUserIsApprover(dossierId);
|
||||
ApproveResponse approveResponse = new ApproveResponse(false, new HashMap<>());
|
||||
ApproveResponse approveResponse = new ApproveResponse(fileId, false, new ArrayList<>());
|
||||
if (!force) {
|
||||
approveResponse = approvalVerificationService.verifyApprovalOfFile(dossierId, fileId);
|
||||
}
|
||||
@ -411,8 +411,8 @@ public class StatusController implements StatusResource {
|
||||
@Override
|
||||
@PreAuthorize("hasAuthority('" + SET_STATUS_APPROVED + "')")
|
||||
public List<ApproveResponse> setStatusApprovedForList(String dossierId,
|
||||
List<String> fileIds,
|
||||
@RequestParam(value = FORCE_REQUEST_PARAM, required = false, defaultValue = "false") boolean force) {
|
||||
List<String> fileIds,
|
||||
@RequestParam(value = FORCE_REQUEST_PARAM, required = false, defaultValue = "false") boolean force) {
|
||||
|
||||
List<ApproveResponse> approveResponses = new ArrayList<>();
|
||||
accessControlService.checkAccessPermissionsToDossier(dossierId);
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service;
|
||||
|
||||
import static com.iqser.red.service.persistence.service.v1.api.shared.model.warning.WarningsComparatorUtils.WARNING_MODEL_COMPARATOR;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -21,10 +24,12 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.warning.War
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
|
||||
@Slf4j
|
||||
public class ApprovalVerificationService {
|
||||
|
||||
EntityLogService entityLogService;
|
||||
@ -35,6 +40,7 @@ public class ApprovalVerificationService {
|
||||
public ApproveResponse verifyApprovalOfFile(String dossierId, String fileId) {
|
||||
|
||||
ApproveResponse approveResponse = new ApproveResponse();
|
||||
approveResponse.setFileId(fileId);
|
||||
EntityLog entityLog = entityLogService.getEntityLog(dossierId, fileId, true);
|
||||
List<EntityLogEntry> entityLogEntries = entityLog.getEntityLogEntry();
|
||||
List<LegalBasisEntity> legalBasisMappings = legalBasisMappingPersistenceService.getLegalBasisMapping(dossierRepository.findDossierTemplateId(dossierId));
|
||||
@ -42,18 +48,18 @@ public class ApprovalVerificationService {
|
||||
for (EntityLogEntry entry : entityLogEntries) {
|
||||
if (entry.getState().equals(EntryState.APPLIED) && !entry.getEntryType().equals(EntryType.IMAGE) && !entry.getEntryType().equals(EntryType.IMAGE_HINT)) {
|
||||
if (StringUtils.isEmpty(entry.getLegalBasis())) {
|
||||
addWarning(entry, fileId, WarningType.LEGAL_BASIS_MISSING, approveResponse);
|
||||
addWarning(entry, WarningType.LEGAL_BASIS_MISSING, approveResponse);
|
||||
} else {
|
||||
var legalBasisEntity = legalBasisMappings.stream()
|
||||
.filter(mapping -> mapping.getReason().equals(entry.getLegalBasis()))
|
||||
.findFirst();
|
||||
if (legalBasisEntity.isEmpty() || StringUtils.isEmpty(legalBasisEntity.get().getTechnicalName())) {
|
||||
addWarning(entry, fileId, WarningType.UNMAPPED_JUSTIFICATION, approveResponse);
|
||||
addWarning(entry, WarningType.UNMAPPED_JUSTIFICATION, approveResponse);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (entry.getState().equals(EntryState.PENDING)) {
|
||||
addWarning(entry, fileId, WarningType.PENDING_CHANGE, approveResponse);
|
||||
addWarning(entry, WarningType.PENDING_CHANGE, approveResponse);
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,19 +68,23 @@ public class ApprovalVerificationService {
|
||||
}
|
||||
|
||||
|
||||
private void addWarning(EntityLogEntry entry, String fileId, WarningType warningType, ApproveResponse approveResponse) {
|
||||
private void addWarning(EntityLogEntry entry, WarningType warningType, ApproveResponse approveResponse) {
|
||||
|
||||
approveResponse.addFileWarning(fileId,
|
||||
WarningModel.builder()
|
||||
.id(entry.getId())
|
||||
.pages(entry.getPositions()
|
||||
.stream()
|
||||
.map(Position::getPageNumber)
|
||||
.collect(Collectors.toSet()))
|
||||
.value(shortenValue(entry.getValue()))
|
||||
.warningType(warningType)
|
||||
.type(entry.getType())
|
||||
.build());
|
||||
ArrayList<WarningModel> fileWarnings = approveResponse.getFileWarnings();
|
||||
WarningModel newFileWarning = WarningModel.builder()
|
||||
.id(entry.getId())
|
||||
.pages(entry.getPositions()
|
||||
.stream()
|
||||
.map(Position::getPageNumber)
|
||||
.collect(Collectors.toSet()))
|
||||
.value(shortenValue(entry.getValue()))
|
||||
.warningType(warningType)
|
||||
.type(entry.getType())
|
||||
.build();
|
||||
fileWarnings.add(newFileWarning);
|
||||
fileWarnings.sort(WARNING_MODEL_COMPARATOR);
|
||||
approveResponse.setFileWarnings(fileWarnings);
|
||||
log.info("fileWarnigns: {}", approveResponse.getFileWarnings());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -12,7 +12,6 @@ import java.util.List;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
|
||||
@ -117,12 +116,10 @@ public class ApprovalTest extends AbstractPersistenceServerServiceTest {
|
||||
assertTrue(approveResponse.isHasWarnings());
|
||||
assertFalse(approveResponse.getFileWarnings().isEmpty());
|
||||
assertEquals(approveResponse.getFileWarnings()
|
||||
.get(file.getFileId())
|
||||
.stream()
|
||||
.filter(c -> c.getWarningType().equals(WarningType.PENDING_CHANGE))
|
||||
.count(), 1);
|
||||
assertEquals(approveResponse.getFileWarnings()
|
||||
.get(file.getFileId())
|
||||
.stream()
|
||||
.filter(c -> c.getWarningType().equals(WarningType.LEGAL_BASIS_MISSING))
|
||||
.count(), 1);
|
||||
@ -153,10 +150,8 @@ public class ApprovalTest extends AbstractPersistenceServerServiceTest {
|
||||
assertTrue(approveResponse.isHasWarnings());
|
||||
assertFalse(approveResponse.getFileWarnings().isEmpty());
|
||||
assertEquals(approveResponse.getFileWarnings()
|
||||
.get(file.getFileId())
|
||||
.get(0).getValue().length(), 100);
|
||||
assertEquals(approveResponse.getFileWarnings()
|
||||
.get(file.getFileId())
|
||||
.get(0).getWarningType(), WarningType.PENDING_CHANGE);
|
||||
}
|
||||
|
||||
|
||||
@ -1,16 +1,12 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.shared.model.warning;
|
||||
|
||||
import static com.iqser.red.service.persistence.service.v1.api.shared.model.warning.WarningsComparatorUtils.WARNING_MODEL_COMPARATOR;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ -18,22 +14,11 @@ import lombok.NoArgsConstructor;
|
||||
@Builder
|
||||
public class ApproveResponse {
|
||||
|
||||
@NonNull
|
||||
private String fileId;
|
||||
|
||||
private boolean hasWarnings;
|
||||
|
||||
private Map<String, List<WarningModel>> fileWarnings = new HashMap<>();
|
||||
|
||||
|
||||
public void addFileWarning(String fileId, WarningModel warningModel) {
|
||||
|
||||
if (fileWarnings.containsKey(fileId)) {
|
||||
fileWarnings.get(fileId).add(warningModel);
|
||||
} else {
|
||||
List<WarningModel> warningModels = new ArrayList<>();
|
||||
warningModels.add(warningModel);
|
||||
fileWarnings.put(fileId, warningModels);
|
||||
}
|
||||
|
||||
fileWarnings.get(fileId).sort(WARNING_MODEL_COMPARATOR);
|
||||
}
|
||||
private ArrayList<WarningModel> fileWarnings = new ArrayList<>();
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user