diff --git a/backend/bankaccounts/pom.xml b/backend/bankaccounts/pom.xml
index dfc943411f..3324bc3575 100644
--- a/backend/bankaccounts/pom.xml
+++ b/backend/bankaccounts/pom.xml
@@ -5,7 +5,7 @@
bankaccounts
jar
bankaccounts
- 0.1.3
+ 0.1.4
1.8
${java.version}
diff --git a/backend/bankaccounts/src/main/java/org/egov/util/WorkflowUtil.java b/backend/bankaccounts/src/main/java/org/egov/util/WorkflowUtil.java
deleted file mode 100644
index b669850a97..0000000000
--- a/backend/bankaccounts/src/main/java/org/egov/util/WorkflowUtil.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package org.egov.util;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import digit.models.coremodels.*;
-import org.egov.common.contract.request.RequestInfo;
-import org.egov.common.contract.request.User;
-import org.egov.config.Configuration;
-import org.egov.repository.ServiceRequestRepository;
-import org.egov.tracer.model.CustomException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-@Service
-public class WorkflowUtil {
-
- @Autowired
- private ServiceRequestRepository repository;
-
- @Autowired
- private ObjectMapper mapper;
-
- @Autowired
- private Configuration configs;
-
-
- /**
- * Searches the BussinessService corresponding to the businessServiceCode
- * Returns applicable BussinessService for the given parameters
- *
- * @param requestInfo
- * @param tenantId
- * @param businessServiceCode
- * @return
- */
- public BusinessService getBusinessService(RequestInfo requestInfo, String tenantId, String businessServiceCode) {
-
- StringBuilder url = getSearchURLWithParams(tenantId, businessServiceCode);
- RequestInfoWrapper requestInfoWrapper = RequestInfoWrapper.builder().requestInfo(requestInfo).build();
- Object result = repository.fetchResult(url, requestInfoWrapper);
- BusinessServiceResponse response = null;
- try {
- response = mapper.convertValue(result, BusinessServiceResponse.class);
- } catch (IllegalArgumentException e) {
- throw new CustomException("PARSING ERROR", "Failed to parse response of workflow business service search");
- }
-
- if (CollectionUtils.isEmpty(response.getBusinessServices()))
- throw new CustomException("BUSINESSSERVICE_NOT_FOUND", "The businessService " + businessServiceCode + " is not found");
-
- return response.getBusinessServices().get(0);
- }
-
- /**
- * Calls the workflow service with the given action and updates the status
- * Returns the updated status of the application
- *
- * @param requestInfo
- * @param tenantId
- * @param businessId
- * @param businessServiceCode
- * @param workflow
- * @param wfModuleName
- * @return
- */
- public String updateWorkflowStatus(RequestInfo requestInfo, String tenantId,
- String businessId, String businessServiceCode, Workflow workflow, String wfModuleName) {
- ProcessInstance processInstance = getProcessInstanceForWorkflow(requestInfo, tenantId, businessId,
- businessServiceCode, workflow, wfModuleName);
- ProcessInstanceRequest workflowRequest = new ProcessInstanceRequest(requestInfo, Collections.singletonList(processInstance));
- State state = callWorkFlow(workflowRequest);
-
- return state.getApplicationStatus();
- }
-
- /**
- * Creates url for search based on given tenantId and businessServices
- *
- * @param tenantId
- * @param businessService
- * @return
- */
- private StringBuilder getSearchURLWithParams(String tenantId, String businessService) {
- StringBuilder url = new StringBuilder(configs.getWfHost());
- url.append(configs.getWfBusinessServiceSearchPath());
- url.append("?tenantId=");
- url.append(tenantId);
- url.append("&businessServices=");
- url.append(businessService);
- return url;
- }
-
- /**
- * Enriches ProcessInstance Object for Workflow
- *
- * @param requestInfo
- * @param tenantId
- * @param businessId
- * @param businessServiceCode
- * @param workflow
- * @param wfModuleName
- * @return
- */
- private ProcessInstance getProcessInstanceForWorkflow(RequestInfo requestInfo, String tenantId,
- String businessId, String businessServiceCode, Workflow workflow, String wfModuleName) {
-
- ProcessInstance processInstance = new ProcessInstance();
- processInstance.setBusinessId(businessId);
- processInstance.setAction(workflow.getAction());
- processInstance.setModuleName(wfModuleName);
- processInstance.setTenantId(tenantId);
- processInstance.setBusinessService(getBusinessService(requestInfo, tenantId, businessServiceCode).getBusinessService());
- processInstance.setDocuments(workflow.getVerificationDocuments());
- processInstance.setComment(workflow.getComments());
-
- if (!CollectionUtils.isEmpty(workflow.getAssignes())) {
- List users = new ArrayList<>();
-
- workflow.getAssignes().forEach(uuid -> {
- User user = new User();
- user.setUuid(uuid);
- users.add(user);
- });
-
- processInstance.setAssignes(users);
- }
-
- return processInstance;
- }
-
- /**
- * Gets the workflow corresponding to the processInstance
- *
- * @param processInstances
- * @return
- */
- public Map getWorkflow(List processInstances) {
-
- Map businessIdToWorkflow = new HashMap<>();
-
- processInstances.forEach(processInstance -> {
- List userIds = null;
-
- if (!CollectionUtils.isEmpty(processInstance.getAssignes())) {
- userIds = processInstance.getAssignes().stream().map(User::getUuid).collect(Collectors.toList());
- }
-
- Workflow workflow = Workflow.builder()
- .action(processInstance.getAction())
- .assignes(userIds)
- .comments(processInstance.getComment())
- .verificationDocuments(processInstance.getDocuments())
- .build();
-
- businessIdToWorkflow.put(processInstance.getBusinessId(), workflow);
- });
-
- return businessIdToWorkflow;
- }
-
- /**
- * Method to take the ProcessInstanceRequest as parameter and set resultant status
- *
- * @param workflowReq
- * @return
- */
- private State callWorkFlow(ProcessInstanceRequest workflowReq) {
- ProcessInstanceResponse response = null;
- StringBuilder url = new StringBuilder(configs.getWfHost().concat(configs.getWfTransitionPath()));
- Object optional = repository.fetchResult(url, workflowReq);
- response = mapper.convertValue(optional, ProcessInstanceResponse.class);
- return response.getProcessInstances().get(0).getState();
- }
-}
\ No newline at end of file
diff --git a/backend/bankaccounts/src/main/java/org/egov/web/models/Pagination.java b/backend/bankaccounts/src/main/java/org/egov/web/models/Pagination.java
index 06da1fa3b9..63c7d7e27d 100644
--- a/backend/bankaccounts/src/main/java/org/egov/web/models/Pagination.java
+++ b/backend/bankaccounts/src/main/java/org/egov/web/models/Pagination.java
@@ -23,8 +23,8 @@
public class Pagination {
@JsonProperty("limit")
- @DecimalMax("100")
- private Double limit = 10d;
+// @DecimalMax("100")
+ private Double limit = null;
@JsonProperty("offSet")
private Double offSet = 0d;
diff --git a/backend/expense-calculator/pom.xml b/backend/expense-calculator/pom.xml
index 3444e2ac30..1f1d99f08a 100644
--- a/backend/expense-calculator/pom.xml
+++ b/backend/expense-calculator/pom.xml
@@ -4,7 +4,7 @@
expense-calculator
jar
expense-calculator
- 2.0.0
+ 2.0.1
1.8
${java.version}
diff --git a/backend/expense-calculator/src/main/java/org/egov/digit/expense/calculator/config/ExpenseCalculatorConfiguration.java b/backend/expense-calculator/src/main/java/org/egov/digit/expense/calculator/config/ExpenseCalculatorConfiguration.java
index 6fa0691b76..59c77c724a 100644
--- a/backend/expense-calculator/src/main/java/org/egov/digit/expense/calculator/config/ExpenseCalculatorConfiguration.java
+++ b/backend/expense-calculator/src/main/java/org/egov/digit/expense/calculator/config/ExpenseCalculatorConfiguration.java
@@ -76,6 +76,12 @@ public class ExpenseCalculatorConfiguration {
@Value("${egov.mdms.search.endpoint}")
private String mdmsEndPoint;
+ @Value("${egov.mdms.v2.host}")
+ private String mdmsV2Host;
+
+ @Value("${egov.mdms.v2.search.endpoint}")
+ private String mdmsV2EndPoint;
+
// MusterRoll
@Value("${egov.musterroll.host}")
private String musterRollHost;
diff --git a/backend/expense-calculator/src/main/java/org/egov/digit/expense/calculator/service/ExpenseCalculatorService.java b/backend/expense-calculator/src/main/java/org/egov/digit/expense/calculator/service/ExpenseCalculatorService.java
index a12a665bac..6fefe0f9f3 100644
--- a/backend/expense-calculator/src/main/java/org/egov/digit/expense/calculator/service/ExpenseCalculatorService.java
+++ b/backend/expense-calculator/src/main/java/org/egov/digit/expense/calculator/service/ExpenseCalculatorService.java
@@ -21,27 +21,7 @@
import org.egov.digit.expense.calculator.util.MdmsUtils;
import org.egov.digit.expense.calculator.util.ProjectUtil;
import org.egov.digit.expense.calculator.validator.ExpenseCalculatorServiceValidator;
-import org.egov.digit.expense.calculator.web.models.ApplicableCharge;
-import org.egov.digit.expense.calculator.web.models.Bill;
-import org.egov.digit.expense.calculator.web.models.BillMapper;
-import org.egov.digit.expense.calculator.web.models.BillMetaRecords;
-import org.egov.digit.expense.calculator.web.models.BillResponse;
-import org.egov.digit.expense.calculator.web.models.BusinessService;
-import org.egov.digit.expense.calculator.web.models.Calculation;
-import org.egov.digit.expense.calculator.web.models.CalculationRequest;
-import org.egov.digit.expense.calculator.web.models.CalculatorSearchCriteria;
-import org.egov.digit.expense.calculator.web.models.CalculatorSearchRequest;
-import org.egov.digit.expense.calculator.web.models.Contract;
-import org.egov.digit.expense.calculator.web.models.Criteria;
-import org.egov.digit.expense.calculator.web.models.HeadCode;
-import org.egov.digit.expense.calculator.web.models.LabourCharge;
-import org.egov.digit.expense.calculator.web.models.MusterRoll;
-import org.egov.digit.expense.calculator.web.models.MusterRollRequest;
-import org.egov.digit.expense.calculator.web.models.Payer;
-import org.egov.digit.expense.calculator.web.models.PurchaseBill;
-import org.egov.digit.expense.calculator.web.models.PurchaseBillRequest;
-import org.egov.digit.expense.calculator.web.models.Workflow;
-import org.egov.digit.expense.calculator.web.models.CalcEstimate;
+import org.egov.digit.expense.calculator.web.models.*;
import org.egov.tracer.model.CustomException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -100,11 +80,11 @@ public Calculation calculateEstimates(CalculationRequest calculationRequest) {
Criteria criteria = calculationRequest.getCriteria();
if (criteria.getMusterRollId() != null && !criteria.getMusterRollId().isEmpty()) {
- // Fetch wage seeker skills from MDMS
- List labourCharges = fetchMDMSDataForLabourCharges(requestInfo, criteria.getTenantId());
// Fetch all the approved muster rolls for provided muster Ids
List musterRolls = fetchApprovedMusterRolls(requestInfo, criteria, false);
- return wageSeekerBillGeneratorService.calculateEstimates(requestInfo, criteria.getTenantId(), musterRolls, labourCharges);
+ // Fetch wage seeker skills from MDMS
+ List sorDetails = fetchMDMSDataForLabourCharges(requestInfo, criteria.getTenantId(), musterRolls);
+ return wageSeekerBillGeneratorService.calculateEstimates(requestInfo, criteria.getTenantId(), musterRolls, sorDetails);
} else {
List bills = fetchBills(requestInfo, criteria.getTenantId(), criteria.getContractId());
//TODO: Add check for empty bill list here and send back a response
@@ -235,14 +215,15 @@ public List createWageOrSupervisionBills(CalculationRequest calculationReq
private List createWageBill(RequestInfo requestInfo, Criteria criteria, Map metaInfo) {
log.info("Create wage bill for musterRollIds :"+criteria.getMusterRollId() );
- // Fetch wage seeker skills from MDMS
- List labourCharges = fetchMDMSDataForLabourCharges(requestInfo, criteria.getTenantId());
// Fetch musterRolls for given muster roll IDs
List musterRolls = fetchApprovedMusterRolls(requestInfo,criteria,true);
+ // Fetch wage seeker skills from MDMS
+// List labourCharges = fetchMDMSDataForLabourCharges(requestInfo, criteria.getTenantId(), musterRolls);
+ List sorDetails = fetchMDMSDataForLabourCharges(requestInfo, criteria.getTenantId(), musterRolls);
// Contract project mapping
Map contractProjectMapping = getContractProjectMapping(musterRolls);
metaInfo.putAll(contractProjectMapping);
- return wageSeekerBillGeneratorService.createWageSeekerBills(requestInfo,musterRolls,labourCharges,metaInfo);
+ return wageSeekerBillGeneratorService.createWageSeekerBills(requestInfo,musterRolls,sorDetails,metaInfo);
}
private List createSupervisionBill(RequestInfo requestInfo, Criteria criteria, Map metaInfo) {
@@ -304,8 +285,8 @@ public void createAndPostWageSeekerBill(MusterRollRequest musterRollRequest){
Map context = new HashMap<>();
context.putAll(contractProjectMapping);
// Fetch wage seeker skills from MDMS
- List labourCharges = fetchMDMSDataForLabourCharges(requestInfo, musterRoll.getTenantId());
- List wageSeekerBills = wageSeekerBillGeneratorService.createWageSeekerBills(requestInfo,Collections.singletonList(musterRoll),labourCharges,context);
+ List sorDetails = fetchMDMSDataForLabourCharges(requestInfo, musterRoll.getTenantId(), Collections.singletonList(musterRoll));
+ List wageSeekerBills = wageSeekerBillGeneratorService.createWageSeekerBills(requestInfo,Collections.singletonList(musterRoll),sorDetails,context);
BillResponse billResponse = null;
Workflow workflow = Workflow.builder()
.action(WF_SUBMIT_ACTION_CONSTANT)
@@ -343,17 +324,51 @@ private BillResponse postUpdateBill(RequestInfo requestInfo, Bill bill, Workflow
return billUtils.postUpdateBill(requestInfo, bill, workflow);
}
- private List fetchMDMSDataForLabourCharges(RequestInfo requestInfo, String tenantId){
+ private List fetchMDMSDataForLabourCharges(RequestInfo requestInfo, String tenantId, List musterRolls){
log.info("Fetch wage seeker skills MDMS");
- Object mdmsData = mdmsUtils.fetchMDMSDataForLabourCharges(requestInfo, tenantId);
- List