Commit 2b1efdc4 authored by đinh thị đầm's avatar đinh thị đầm

search filter customize individual

parent 6aa92f53
package com.viettel.campaign.service.impl;
import com.github.tennaito.rsql.jpa.JpaCriteriaCountQueryVisitor;
import com.github.tennaito.rsql.jpa.JpaCriteriaQueryVisitor;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.mapper.CustomerListMapper;
import com.viettel.campaign.mapper.CustomerMapper;
......@@ -14,6 +16,9 @@ import com.viettel.campaign.web.dto.request_dto.CustomerDetailRequestDTO;
import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import com.viettel.econtact.filter.UserSession;
import cz.jirutka.rsql.parser.RSQLParser;
import cz.jirutka.rsql.parser.ast.Node;
import cz.jirutka.rsql.parser.ast.RSQLVisitor;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
......@@ -38,6 +43,7 @@ import org.springframework.util.ResourceUtils;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaQuery;
import javax.servlet.http.HttpServletRequest;
import java.io.FileInputStream;
import java.io.FileOutputStream;
......@@ -958,6 +964,7 @@ public class CustomerServiceImpl implements CustomerService {
return customizeFieldDTOList;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) {
......@@ -1093,4 +1100,37 @@ public class CustomerServiceImpl implements CustomerService {
public Customer update(Customer c) {
return customerRepository.save(c);
}
@Override
public List<Customer> searchByQuery(String queryString) {
RSQLVisitor<CriteriaQuery<Customer>, EntityManager> visitor = new JpaCriteriaQueryVisitor<>();
CriteriaQuery<Customer> query;
query = getCriteriaQuery(queryString, visitor);
List<Customer> resultList = entityManager.createQuery(query).getResultList();
if (resultList == null || resultList.isEmpty()){
return Collections.emptyList();
}
return resultList;
}
@Override
public Long countByQuery(String queryString) {
RSQLVisitor<CriteriaQuery<Long>, EntityManager> visitor = new JpaCriteriaCountQueryVisitor<Customer>();
CriteriaQuery<Long> query;
query = getCriteriaQuery(queryString, visitor);
return entityManager.createQuery(query).getSingleResult();
}
private <T> CriteriaQuery<T> getCriteriaQuery(String queryString, RSQLVisitor<CriteriaQuery<T>, EntityManager> visitor) {
Node rootNode;
CriteriaQuery<T> query;
try {
rootNode = new RSQLParser().parse(queryString);
query = rootNode.accept(visitor, entityManager);
} catch (Exception e){
e.printStackTrace();
throw new IllegalArgumentException(e.getMessage());
}
return query;
}
}
......@@ -127,4 +127,5 @@ public class CampaignCfg {
return new ResponseEntity(result, HttpStatus.OK);
}
}
package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.utils.RedisUtil;
import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.service.CustomerService;
......@@ -236,4 +237,16 @@ public class CustomerController {
List<CustomizeFieldDTO> data = customerService.getCustomizeField(customerId);
return new ResponseEntity<>(data, HttpStatus.OK);
}
@GetMapping(path = "", produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<List<Customer>> query(@RequestParam(value = "search") String query) {
List<Customer> result = null;
try {
result= customerService.searchByQuery(query);
}catch (IllegalArgumentException iae){
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body(result);
}
return ResponseEntity.status(HttpStatus.OK)
.body(result);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment