small fix
This commit is contained in:
parent
aeefa6cfc4
commit
2bc28461a4
|
@ -8,7 +8,7 @@ import java.util.UUID;
|
|||
|
||||
public interface AccountingService {
|
||||
|
||||
Integer getCurrentMetricValue(UsageLimitTargetMetric metric, DefinitionEntity definition) throws InvalidApplicationException;
|
||||
Integer getCurrentMetricValue(UsageLimitTargetMetric metric, DefinitionEntity definition, boolean userIdEnabled) throws InvalidApplicationException;
|
||||
|
||||
void set(String metric, UUID tenantId, String tenantCode, Integer value) throws InvalidApplicationException;
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ public class AccountingServiceImpl implements AccountingService {
|
|||
});
|
||||
}
|
||||
|
||||
public Integer getCurrentMetricValue(UsageLimitTargetMetric metric, DefinitionEntity definition) throws InvalidApplicationException {
|
||||
public Integer getCurrentMetricValue(UsageLimitTargetMetric metric, DefinitionEntity definition, boolean userIdEnabled) throws InvalidApplicationException {
|
||||
if (this.isEnabled) {
|
||||
AccountingClient accountingClient = null;
|
||||
try {
|
||||
|
@ -173,12 +173,14 @@ public class AccountingServiceImpl implements AccountingService {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
lookup.setGroupingFields(new FieldSet(List.of(
|
||||
AccountingEntryCreatedIntegrationEvent._serviceId,
|
||||
AccountingEntryCreatedIntegrationEvent._action,
|
||||
AccountingEntryCreatedIntegrationEvent._resource,
|
||||
AccountingEntryCreatedIntegrationEvent._userId
|
||||
)));
|
||||
List<String> fields = new ArrayList<>();
|
||||
fields.add(AccountingEntryCreatedIntegrationEvent._serviceId);
|
||||
fields.add(AccountingEntryCreatedIntegrationEvent._action);
|
||||
fields.add(AccountingEntryCreatedIntegrationEvent._resource);
|
||||
|
||||
if (userIdEnabled) fields.add(AccountingEntryCreatedIntegrationEvent._userId);
|
||||
|
||||
lookup.setGroupingFields(new FieldSet(fields));
|
||||
|
||||
lookup.setProject(new FieldSet(this.accountingProperties.getProjectFields()));
|
||||
|
||||
|
|
|
@ -381,11 +381,15 @@ public class MaintenanceServiceImpl implements MaintenanceService {
|
|||
private void calculateReset(UsageLimitTargetMetric usageLimitTargetMetric, long itemsCount, UUID tenantId ,String tenantCode) throws InvalidApplicationException {
|
||||
try {
|
||||
this.tenantScope.setTempTenant(this.entityManager, tenantId, tenantCode);
|
||||
Integer currentValue = this.accountingService.getCurrentMetricValue(usageLimitTargetMetric, null);
|
||||
if (currentValue > itemsCount) {
|
||||
this.accountingService.set(usageLimitTargetMetric.getValue(), tenantId, tenantCode, currentValue - (int) itemsCount);
|
||||
}
|
||||
if (currentValue < itemsCount) {
|
||||
Integer currentValue = this.accountingService.getCurrentMetricValue(usageLimitTargetMetric, null, false);
|
||||
if (currentValue == 0) this.accountingService.set(usageLimitTargetMetric.getValue(), tenantId, tenantCode, (int) itemsCount);
|
||||
else if (currentValue < itemsCount) {
|
||||
if (currentValue < 0) {
|
||||
this.accountingService.set(usageLimitTargetMetric.getValue(), tenantId, tenantCode, Math.abs(currentValue - (int) itemsCount));
|
||||
} else {
|
||||
this.accountingService.set(usageLimitTargetMetric.getValue(), tenantId, tenantCode, currentValue - (int) itemsCount);
|
||||
}
|
||||
} else if (currentValue > itemsCount) {
|
||||
this.accountingService.set(usageLimitTargetMetric.getValue(), tenantId, tenantCode, (int) itemsCount - currentValue);
|
||||
}
|
||||
} finally {
|
||||
|
|
|
@ -184,7 +184,7 @@ public class UsageLimitServiceImpl implements UsageLimitService {
|
|||
DefinitionEntity definition = this.xmlHandlingService.fromXmlSafe(DefinitionEntity.class, usageLimitEntity.getDefinition());
|
||||
if (definition == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{usageLimitEntity.getId(), DefinitionEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
|
||||
Integer currentValue = this.accountingService.getCurrentMetricValue(metric, definition);
|
||||
Integer currentValue = this.accountingService.getCurrentMetricValue(metric, definition, true);
|
||||
if (currentValue >= usageLimitEntity.getValue()) throw new MyValidationException(this.errors.getUsageLimitException().getCode(), usageLimitEntity.getLabel());
|
||||
}
|
||||
} catch (InvalidApplicationException e) {
|
||||
|
|
Loading…
Reference in New Issue