Merge pull request #276 from Kitzanos/feature/GEPAFINBE-215

GEPAFINBE-215 (Updated vatCheck api response)
This commit is contained in:
rajeshkhore
2025-04-30 20:55:56 +05:30
committed by GitHub
4 changed files with 54 additions and 5 deletions

View File

@@ -420,7 +420,8 @@ public class FormDao {
.matchesPattern(value, fieldValidatorBean.getPattern(), fieldLabel) // Only applies if pattern is present
.validateCustom(value, fieldValidatorBean.getCustom(), fieldLabel,contentResponseBean); // Add the custom validation here
if (fieldValidatorBean.getCustom() != null && fieldValidatorBean.getCustom().equals(GepafinConstant.IS_PIVA)) {
String error = validateVatNumber(value, fieldValidatorBean.getCustom(), fieldLabel);
Long hubId = applicationEntity.getHubId();
String error = validateVatNumber(value, fieldLabel,hubId);
if(error != null) {
validator.addError(error);
}
@@ -504,14 +505,14 @@ public class FormDao {
}).filter(value -> !value.isEmpty()).findFirst().orElse(contentResponseBean.getId());
}
public String validateVatNumber(String value,String customRule,String fieldId){
public String validateVatNumber(String value,String fieldId, Long hubId){
String error=null;
if (value!=null && value.matches("^\\d{1,11}$")) {
// Map<String, Object> customData=null;
try {
// Map<String, Object> vatCheckResponse = vatCheckDao.checkVatNumberApi(value);
vatCheckDao.checkVatNumber(value);
vatCheckDao.checkVatNumber(value, hubId);
// if (Boolean.FALSE.equals(CollectionUtils.isEmpty(vatCheckResponse))) {
// customData = vatCheckResponse;
// }

View File

@@ -3,12 +3,17 @@ package net.gepafin.tendermanagement.dao;
import feign.FeignException;
import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.CompanyEntity;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.enums.VatCheckVersionTypeEnum;
import net.gepafin.tendermanagement.model.response.VatCheckResponseBean;
import net.gepafin.tendermanagement.repositories.CompanyRepository;
import net.gepafin.tendermanagement.repositories.GlobalConfigRepository;
import net.gepafin.tendermanagement.service.feignClient.VatCheckV1Service;
import net.gepafin.tendermanagement.service.feignClient.VatCheckV2Service;
import net.gepafin.tendermanagement.util.Utils;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,6 +53,9 @@ public class VatCheckDao {
@Autowired
private GlobalConfigRepository globalConfigRepository;
@Autowired
private CompanyRepository companyRepository;
public final Logger log = LoggerFactory.getLogger(VatCheckDao.class);
public VatCheckResponseBean checkVatNumberV1(String vatNumber) {
@@ -56,6 +64,7 @@ public class VatCheckDao {
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
if (Boolean.TRUE.equals(Boolean.parseBoolean(isVatCheckGloballyDisabled))) {
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
vatCheckResponseBean.setVersion(VatCheckVersionTypeEnum.V1);
return vatCheckResponseBean;
}
try {
@@ -96,6 +105,7 @@ public class VatCheckDao {
public static void processValidResponseV1(Map<String, Object> responseMap, VatCheckResponseBean vatCheckResponseBean) {
Object dataObj = responseMap.get("data");
vatCheckResponseBean.setVersion(VatCheckVersionTypeEnum.V1);
if (dataObj instanceof Map<?, ?> rawDataMap) {
Map<String, Object> responseBody = new LinkedHashMap<>();
rawDataMap.forEach((k, v) -> {
@@ -118,9 +128,20 @@ public class VatCheckDao {
}
public VatCheckResponseBean checkVatNumber(String vatNumber) {
public VatCheckResponseBean checkVatNumber(String vatNumber, Long hubId) {
try {
CompanyEntity company = companyRepository.findByVatNumberAndHubId(vatNumber, hubId);
if (company != null && Boolean.FALSE.equals(StringUtils.isEmpty(company.getJson()))) {
Map<String, Object> responseMap = Utils.convertJsonStringToMap(company.getJson());
VatCheckResponseBean jsonResponse = validateJsonFromDb(responseMap);
if (jsonResponse != null) {
return jsonResponse;
}
}
String vatApiVersion = getVatCheckVersion();
if(!isVatCheckApiV2(vatApiVersion)){
return checkVatNumberV1(vatNumber);
@@ -134,6 +155,26 @@ public class VatCheckDao {
return vatCheckResponseBean;
}
}
private VatCheckResponseBean validateJsonFromDb(Map<String, Object> responseMap) {
if (responseMap == null || !responseMap.containsKey("data")) return null;
Object data = responseMap.get("data");
if (data instanceof Map<?, ?> dataMap && !dataMap.isEmpty()) {
VatCheckResponseBean response = new VatCheckResponseBean();
processValidResponseV1(responseMap, response);
return response;
}
if (data instanceof List<?> dataList && !dataList.isEmpty()) {
VatCheckResponseBean response = new VatCheckResponseBean();
processValidResponse(responseMap, response);
return response;
}
return null;
}
public VatCheckResponseBean checkVatNumberV2(String vatNumber) {
@@ -142,6 +183,7 @@ public class VatCheckDao {
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
if (Boolean.TRUE.equals(Boolean.parseBoolean(isVatCheckGloballyDisabled))) {
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
vatCheckResponseBean.setVersion(VatCheckVersionTypeEnum.V2);
return vatCheckResponseBean;
}
try {
@@ -175,6 +217,7 @@ public class VatCheckDao {
public static void processValidResponse(Map<String, Object> responseMap, VatCheckResponseBean vatCheckResponseBean) {
vatCheckResponseBean.setVersion(VatCheckVersionTypeEnum.V2);
if (responseMap == null || !responseMap.containsKey("data")) {
vatCheckResponseBean.setMessage(Translator.toLocale(GepafinConstant.INVALID_VATNUMBER));
return;

View File

@@ -1,6 +1,8 @@
package net.gepafin.tendermanagement.model.response;
import lombok.Getter;
import lombok.Setter;
import net.gepafin.tendermanagement.enums.VatCheckVersionTypeEnum;
import java.util.Map;
@Getter
@@ -9,4 +11,5 @@ public class VatCheckResponseBean {
private Boolean valid;
private Map<String, Object> vatCheckResponse;
private String message;
private VatCheckVersionTypeEnum version;
}

View File

@@ -83,7 +83,9 @@ public class CompanyServiceImpl implements CompanyService {
@Override
@Transactional(readOnly = true)
public VatCheckResponseBean checkVatNumber(HttpServletRequest request, String vatNumber) {
return vatCheckDao.checkVatNumber(vatNumber);
UserEntity userEntity = validator.validateUser(request);
Long hubId = userEntity.getHub().getId();
return vatCheckDao.checkVatNumber(vatNumber, hubId);
}
@Override
public CompanyEntity validateCompany(Long companyId) {