Skip to content

Commit

Permalink
Merge pull request upyog#32 from BimalKumarNiua/niua-dev
Browse files Browse the repository at this point in the history
Niua dev
  • Loading branch information
niua-upyog authored May 31, 2024
2 parents d9f23b5 + 098063b commit c70351b
Show file tree
Hide file tree
Showing 7 changed files with 245 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ public State updateWorkflow(AssetRequest assetRequest, CreationReason creationRe
// else
// request.getProperty().setStatus(Status.fromValue(state.getApplicationStatus()));
// request.getProperty().getWorkflow().setState(state);
assetRequest.getAsset().setStatus(state.getApplicationStatus());
return state;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- Create ENUM types
--CREATE TYPE public.asset_classification AS ENUM ('MOVABLE', 'IMMOVABLE');
--CREATE TYPE public.parent_type AS ENUM ('LAND', 'BUILDING', 'SERVICE','OTHER');

--ALTER TABLE eg_asset_assetdetails DROP COLUMN action;

--ALTER TABLE eg_asset_auditdetails DROP COLUMN action;

--ALTER TABLE eg_asset_auditdetails ADD COLUMN remarks character varying(256);
ALTER TABLE eg_asset_auditdetails ALTER COLUMN additionaldetails TYPE JSONB;
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
package org.egov.inbox.service;

import com.jayway.jsonpath.JsonPath;
import lombok.extern.slf4j.Slf4j;
import org.egov.common.contract.request.RequestInfo;
import org.egov.inbox.repository.ServiceRequestRepository;
import org.egov.inbox.web.model.InboxSearchCriteria;
import org.egov.inbox.web.model.workflow.ProcessInstanceSearchCriteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static org.egov.inbox.util.AssetConstants.*;


@Slf4j
@Service
public class AssetInboxFilterService {

@Value("${egov.user.host}")
private String userHost;

@Value("${egov.user.search.path}")
private String userSearchEndpoint;

@Value("${egov.searcher.host}")
private String searcherHost;

@Value("${egov.searcher.asset.search.path}")
private String assetInboxSearcherEndpoint;

@Value("${egov.searcher.asset.search.desc.path}")
private String assetInboxSearcherDescEndpoint;

@Autowired
private RestTemplate restTemplate;

@Autowired
private ServiceRequestRepository serviceRequestRepository;

public List<String> fetchApplicationNumbersFromSearcher(InboxSearchCriteria criteria, HashMap<String, String> StatusIdNameMap, RequestInfo requestInfo){
List<String> applicationNumbers = new ArrayList<>();
HashMap moduleSearchCriteria = criteria.getModuleSearchCriteria();
ProcessInstanceSearchCriteria processCriteria = criteria.getProcessSearchCriteria();
Boolean isSearchResultEmpty = false;
List<String> userUUIDs = new ArrayList<>();
Boolean isMobileNumberPresent = false;

if(moduleSearchCriteria.containsKey(MOBILE_NUMBER_PARAM)){
isMobileNumberPresent = true;
}
if(isMobileNumberPresent) {
String tenantId = criteria.getTenantId();
String mobileNumber = String.valueOf(moduleSearchCriteria.get(MOBILE_NUMBER_PARAM));
userUUIDs = fetchUserUUID(mobileNumber, requestInfo, tenantId);
Boolean isUserPresentForGivenMobileNumber = CollectionUtils.isEmpty(userUUIDs) ? false : true;
isSearchResultEmpty = !isMobileNumberPresent || !isUserPresentForGivenMobileNumber;
if(isSearchResultEmpty){
return new ArrayList<>();
}
}


if(!isSearchResultEmpty){
Object result = null;

Map<String, Object> searcherRequest = new HashMap<>();
Map<String, Object> searchCriteria = new HashMap<>();

searchCriteria.put(TENANT_ID_PARAM,criteria.getTenantId());
searchCriteria.put(BUSINESS_SERVICE_PARAM, processCriteria.getBusinessService());

if(moduleSearchCriteria.containsKey(LOCALITY_PARAM)){
searchCriteria.put(LOCALITY_PARAM, moduleSearchCriteria.get(LOCALITY_PARAM));
}
if(moduleSearchCriteria.containsKey(ASSET_APPLICATION_NUMBER_PARAM)) {
searchCriteria.put(ASSET_APPLICATION_NUMBER_PARAM, moduleSearchCriteria.get(ASSET_APPLICATION_NUMBER_PARAM));
}

// Accomodating process search criteria in searcher request
if(!ObjectUtils.isEmpty(processCriteria.getAssignee())){
searchCriteria.put(ASSIGNEE_PARAM, processCriteria.getAssignee());
}
if(!ObjectUtils.isEmpty(processCriteria.getStatus())){
searchCriteria.put(STATUS_PARAM, processCriteria.getStatus());
}else{
if(StatusIdNameMap.values().size() > 0) {
if(CollectionUtils.isEmpty(processCriteria.getStatus())) {
searchCriteria.put(STATUS_PARAM, StatusIdNameMap.keySet());
}
}
}

// Paginating searcher results
searchCriteria.put(OFFSET_PARAM, criteria.getOffset());
searchCriteria.put(NO_OF_RECORDS_PARAM, criteria.getLimit());
moduleSearchCriteria.put(LIMIT_PARAM, criteria.getLimit());

searcherRequest.put(REQUESTINFO_PARAM, requestInfo);
searcherRequest.put(SEARCH_CRITERIA_PARAM, searchCriteria);

StringBuilder uri = new StringBuilder();
if(moduleSearchCriteria.containsKey(SORT_ORDER_PARAM) && moduleSearchCriteria.get(SORT_ORDER_PARAM).equals(DESC_PARAM)){
uri.append(searcherHost).append(assetInboxSearcherDescEndpoint);
}else {
uri.append(searcherHost).append(assetInboxSearcherEndpoint);
}
result = restTemplate.postForObject(uri.toString(), searcherRequest, Map.class);
applicationNumbers = JsonPath.read(result, "$.Asset.*.applicationno");

}
return applicationNumbers;
}


private List<String> fetchUserUUID(String mobileNumber, RequestInfo requestInfo, String tenantId) {
StringBuilder uri = new StringBuilder();
uri.append(userHost).append(userSearchEndpoint);
Map<String, Object> userSearchRequest = new HashMap<>();
userSearchRequest.put("RequestInfo", requestInfo);
userSearchRequest.put("tenantId", tenantId);
userSearchRequest.put("userType", "EMPLOYEE");
userSearchRequest.put("mobileNumber", mobileNumber);
List<String> userUuids = new ArrayList<>();
try {
Object user = serviceRequestRepository.fetchResult(uri, userSearchRequest);
if(null != user) {
//log.info(user.toString());
userUuids = JsonPath.read(user, "$.user.*.uuid");
}else {
log.error("Service returned null while fetching user for mobile number - " + mobileNumber);
}
}catch(Exception e) {
log.error("Exception while fetching user for mobile number - " + mobileNumber);
log.error("Exception trace: ", e);
}
return userUuids;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import static org.egov.inbox.util.BSConstants.*;
import static org.egov.inbox.util.WSConstants.WS;
import static org.egov.inbox.util.PTRConstants.PTR;
import static org.egov.inbox.util.AssetConstants.ASSET;

import java.util.*;
import java.util.function.Function;
Expand Down Expand Up @@ -122,6 +123,9 @@ public class InboxService {

@Autowired
private BillingAmendmentInboxFilterService billInboxFilterService;

@Autowired
private AssetInboxFilterService assetInboxFilterService;

@Autowired
private RestTemplate restTemplate;
Expand Down Expand Up @@ -155,11 +159,12 @@ public InboxResponse fetchInboxData(InboxSearchCriteria criteria, RequestInfo re
}

Integer totalCount = 0;
log.info(processCriteria.getModuleName().toString());
if(!(processCriteria.getModuleName().equals(SW) || processCriteria.getModuleName().equals(WS)))
totalCount = workflowService.getProcessCount(criteria.getTenantId(), requestInfo, processCriteria);
// Integer nearingSlaProcessCount = workflowService.getNearingSlaProcessCount(criteria.getTenantId(), requestInfo, processCriteria);
Integer nearingSlaProcessCount = 0;
if(!(processCriteria.getModuleName().equals(PTR) || processCriteria.getModuleName().equals(PT))) {
if(!(processCriteria.getModuleName().equals(PTR) || processCriteria.getModuleName().equals(PT) || processCriteria.getModuleName().equals(ASSET))) {
nearingSlaProcessCount = workflowService.getNearingSlaProcessCount(criteria.getTenantId(), requestInfo, processCriteria);
}

Expand Down Expand Up @@ -370,6 +375,20 @@ public InboxResponse fetchInboxData(InboxSearchCriteria criteria, RequestInfo re
}
}//for pet service

if (!ObjectUtils.isEmpty(processCriteria.getModuleName()) && processCriteria.getModuleName().equals(ASSET)) {

List<String> applicationNumbers = assetInboxFilterService.fetchApplicationNumbersFromSearcher(criteria,
StatusIdNameMap, requestInfo);
if (!CollectionUtils.isEmpty(applicationNumbers)) {
moduleSearchCriteria.put(ACKNOWLEDGEMENT_IDS_PARAM, applicationNumbers);
businessKeys.addAll(applicationNumbers);
moduleSearchCriteria.remove(LOCALITY_PARAM);
moduleSearchCriteria.remove(OFFSET_PARAM);
} else {
isSearchResultEmpty = true;
}
}//for asset service

if (!ObjectUtils.isEmpty(processCriteria.getModuleName()) && ( processCriteria.getModuleName().equals(TL)
|| processCriteria.getModuleName().equals(BPAREG))) {
totalCount = tlInboxFilterService.fetchApplicationCountFromSearcher(criteria, StatusIdNameMap, requestInfo);
Expand Down Expand Up @@ -1047,11 +1066,13 @@ private JSONArray fetchModuleObjects(HashMap moduleSearchCriteria, List<String>
}
StringBuilder url = new StringBuilder(srvMap.get("searchPath"));
url.append("?tenantId=").append(tenantId);
if(moduleSearchCriteria.containsKey("status")) { // for pet-service
if(businessServiceName.contains("ptr")) {
moduleSearchCriteria.remove("status");
}
}//for pet-service

if (moduleSearchCriteria.containsKey("status")) { // for pet-service
if (businessServiceName.contains("ptr")) {
moduleSearchCriteria.remove("status");
}
} // for pet-service

Set<String> searchParams = moduleSearchCriteria.keySet();

searchParams.forEach((param) -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.egov.inbox.util;

public class AssetConstants {

public static final String ASSET = "asset-services";
public static final String MOBILE_NUMBER_PARAM = "mobileNumber";
public static final String BUSINESS_SERVICE_PARAM = "businessservice";
public static final String TENANT_ID_PARAM = "tenantId";
public static final String LOCALITY_PARAM = "locality";
public static final String ASSET_APPLICATION_NUMBER_PARAM = "applicationNo";
public static final String ASSIGNEE_PARAM = "assignee";
public static final String STATUS_PARAM = "status";
public static final String OFFSET_PARAM = "offset";
public static final String NO_OF_RECORDS_PARAM = "noOfRecords";
public static final String LIMIT_PARAM = "limit";
public static final String ACKNOWLEDGEMENT_IDS_PARAM = "acknowledgementIds";
public static final String REQUESTINFO_PARAM = "RequestInfo";
public static final String SEARCH_CRITERIA_PARAM = "searchCriteria";
public static final String USERID_PARAM = "userid";
public static final String SORT_ORDER_PARAM = "sortOrder";
public static final String DESC_PARAM = "DESC";


}
Loading

0 comments on commit c70351b

Please sign in to comment.