Commit a3114bcf authored by Vu Duy Anh's avatar Vu Duy Anh

anhvd commit merge

parents a2c027ec 74d5ace2
...@@ -19,7 +19,9 @@ import org.hibernate.transform.Transformers; ...@@ -19,7 +19,9 @@ import org.hibernate.transform.Transformers;
import org.hibernate.type.*; import org.hibernate.type.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.*; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -27,9 +29,10 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -27,9 +29,10 @@ import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import java.util.ArrayList;
import java.math.BigDecimal; import java.util.HashMap;
import java.util.*; import java.util.List;
import java.util.Map;
@Repository @Repository
public class CampaignRepositoryImpl implements CampaignRepositoryCustom { public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
...@@ -638,7 +641,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -638,7 +641,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
"),\n" + "),\n" +
"data as (\n" + "data as (\n" +
"select a.*, rownum row_ from data_temp a\n" + "select a.*, rownum row_ from data_temp a\n" +
"where a.totalCusList > 0" + "where a.totalCusCampaign > 0" +
"),\n" + "),\n" +
"count_data as (\n" + "count_data as (\n" +
"select count(*) totalRow from data_temp\n" + "select count(*) totalRow from data_temp\n" +
......
...@@ -90,6 +90,6 @@ public interface CustomerService { ...@@ -90,6 +90,6 @@ public interface CustomerService {
//// List<CustomizeFields> searchCustomize(); //// List<CustomizeFields> searchCustomize();
ResultDTO listCustomizeFields(CustomizeFieldsDTO customizeFields); ResultDTO listCustomizeFields(CustomizeFieldsDTO customizeFields);
ResultDTO searchCustomizeFields(int page, int pageSize, long companySiteId, long campaignId, CustomerQueryDTO customerQueryDTO); ResultDTO searchCustomizeFields(CampaignCustomerDTO campaignCustomerDTO);
} }
...@@ -3,6 +3,7 @@ package com.viettel.campaign.service.impl; ...@@ -3,6 +3,7 @@ package com.viettel.campaign.service.impl;
import com.github.tennaito.rsql.jpa.JpaCriteriaCountQueryVisitor; import com.github.tennaito.rsql.jpa.JpaCriteriaCountQueryVisitor;
import com.github.tennaito.rsql.jpa.JpaCriteriaQueryVisitor; import com.github.tennaito.rsql.jpa.JpaCriteriaQueryVisitor;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.mapper.CustomerListMapper;
import com.viettel.campaign.mapper.CustomerMapper; import com.viettel.campaign.mapper.CustomerMapper;
import com.viettel.campaign.model.ccms_full.*; import com.viettel.campaign.model.ccms_full.*;
import com.viettel.campaign.repository.ccms_full.*; import com.viettel.campaign.repository.ccms_full.*;
...@@ -44,6 +45,7 @@ import java.io.ByteArrayOutputStream; ...@@ -44,6 +45,7 @@ import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.lang.reflect.Array;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -1640,12 +1642,12 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1640,12 +1642,12 @@ public class CustomerServiceImpl implements CustomerService {
String[] lstCusId = campaignCustomerDTO.getLstCustomerId().split(","); String[] lstCusId = campaignCustomerDTO.getLstCustomerId().split(",");
List<Short> lstStatus = campaignCustomerRepository.getStatus(); List<Short> lstStatus = campaignCustomerRepository.getStatus();
try { try {
for (String cusId: lstCusId) { for (String cusId : lstCusId) {
CampaignCustomer entity = campaignCustomerRepository.findCampaignCustomerByCampaignIdAndCompanySiteIdAndCustomerId(campaignId, companySiteId, Long.parseLong(cusId)); CampaignCustomer entity = campaignCustomerRepository.findCampaignCustomerByCampaignIdAndCompanySiteIdAndCustomerId(campaignId, companySiteId, Long.parseLong(cusId));
if (entity.getStatus() == 0) { if (entity.getStatus() == 0) {
campaignCustomerRepository.delete(entity); campaignCustomerRepository.delete(entity);
} else if (lstStatus.contains(entity.getStatus())){ } else if (lstStatus.contains(entity.getStatus())) {
entity.setInCampaignStatus((short)0); entity.setInCampaignStatus((short) 0);
campaignCustomerRepository.save(entity); campaignCustomerRepository.save(entity);
} }
} }
...@@ -1736,7 +1738,6 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1736,7 +1738,6 @@ public class CustomerServiceImpl implements CustomerService {
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} }
return resultDTO; return resultDTO;
} }
...@@ -1787,6 +1788,29 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1787,6 +1788,29 @@ public class CustomerServiceImpl implements CustomerService {
return query; return query;
} }
// params.put('1', ["AND","AGE",">=","30"] )
// lst.push(params);
// StringBuilder sql = "Select ..... WHERE 1 = 1 "
// for(lst){
// String[] data = lst[i].value
// sql.append(data[0] + data[1] + data[2] + data[3]);
// }
// Map<String, String> params = new HashMap<>();
// public ResultDTO searchCustomize(List<CustomizeFields> customizeFields) {
// Map<String, CustomizeRequestDTo> hashCustomer = new HashMap<>();
// CustomizeRequestDTo customizeRequestDTo = new CustomizeRequestDTo();
// hashCustomer.put("1", customizeRequestDTo);
// hashCustomer.put("2", customizeRequestDTo);
// hashCustomer.put("3", customizeRequestDTo);
// StringBuilder sb = new StringBuilder();
// sb.append("");
// sb.append("");
// sb.append("");
// sb.append("");
@Override @Override
public ResultDTO listCustomizeFields(CustomizeFieldsDTO customizeFields) { public ResultDTO listCustomizeFields(CustomizeFieldsDTO customizeFields) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
...@@ -1815,6 +1839,45 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1815,6 +1839,45 @@ public class CustomerServiceImpl implements CustomerService {
datafill.setType(cf[x][2]); datafill.setType(cf[x][2]);
lstCustomizeFields.add(datafill); lstCustomizeFields.add(datafill);
} }
// try {
// stringBuilder.append(" with column_name_temp as (");
// stringBuilder.append(" select 'CUSTOMER_ID customerId' , from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'CUSTOMER_NAME customerName' , from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'CUSTOMER_TYPE customerType' , from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'NAME name' , from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'CURRENT_ADDRESS currentAddress', from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'PLACE_OF_BIRTH placeOfBirth', from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'DATE_OF_BIRTH dateOfBirth', from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'MOBILE_NUMBER mobileNumber', from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'EMAIL email', from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'USERNAME username', from user_tab_columns, dual");
// stringBuilder.append(" union all");
// stringBuilder.append(" select 'CUSTOMER_TYPE customerType', from user_tab_columns, dual");
// stringBuilder.append(" where table_name = 'CUSTOMER'");
// stringBuilder.append(" )");
//
// stringBuilder.append(" select * from column_name_temp");
// stringBuilder.append(" union all");
// stringBuilder.append(" select title columnName, 0 isFix ");
// stringBuilder.append(" from customize_fields, dual");
// stringBuilder.append(" where function_code = 'CUSTOMER'");
// stringBuilder.append(" and site_id = :p_company_site_id");
// stringBuilder.append(" and STATUS = 1");
// stringBuilder.append(" and active = 1 ");
// params.put("p_company_site_id", customizeFields.getSiteId());
// params.put("p_customer_id", customizeFields.getCustomerId());
// LOGGER.info("SQL statement: " + stringBuilder);
// list = namedParameterJdbcTemplate.query(stringBuilder.toString(), params, BeanPropertyRowMapper.newInstance(CustomizeFielObjectDTO.class));
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setListData(lstCustomizeFields); resultDTO.setListData(lstCustomizeFields);
...@@ -1829,7 +1892,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1829,7 +1892,8 @@ public class CustomerServiceImpl implements CustomerService {
@Override @Override
public ResultDTO searchCustomizeFields(int page, int pageSize, long SiteId, long campaignId, CustomerQueryDTO customerQueryDTO) { @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchCustomizeFields(CampaignCustomerDTO campaignCustomerDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
...@@ -1857,90 +1921,65 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1857,90 +1921,65 @@ public class CustomerServiceImpl implements CustomerService {
sb.append(" C.CUSTOMER_TYPE customerType,"); sb.append(" C.CUSTOMER_TYPE customerType,");
sb.append(" C.COMPANY_NAME companyName,"); sb.append(" C.COMPANY_NAME companyName,");
sb.append(" C.PLACE_OF_BIRTH placeOfBirth,"); sb.append(" C.PLACE_OF_BIRTH placeOfBirth,");
sb.append(" C.CUSTOMER_TYPE customerType,");
sb.append(" C.EMAIL email,"); sb.append(" C.EMAIL email,");
sb.append(" C.USERNAME username,");
sb.append(" C.NAME name,");
sb.append(" C.MOBILE_NUMBER mobileNumber,"); sb.append(" C.MOBILE_NUMBER mobileNumber,");
sb.append(" C.STATUS status,"); sb.append(" C.STATUS status,");
sb.append(" C.SITE_ID siteId,"); sb.append(" C.SITE_ID siteId,");
sb.append(" CF.FUNCTION_CODE functionCode,"); sb.append(" CF.FUNCTION_CODE functionCode,");
sb.append(" CFO.ACTIVE active,"); sb.append(" CF.ACTIVE active,");
sb.append(" CFO.*"); sb.append(" CFO.*");
sb.append("FROM CUSTOMER C"); sb.append(" FROM CUSTOMER C");
sb.append(" INNER JOIN CUSTOMIZE_FIELD_OBJECT CFO ON C.CUSTOMER_ID = CFO.OBJECT_ID"); sb.append(" INNER JOIN CUSTOMIZE_FIELD_OBJECT CFO ON C.CUSTOMER_ID = CFO.OBJECT_ID");
sb.append(" INNER JOIN CUSTOMIZE_FIELDS CF ON CF.CUSTOMIZE_FIELD_ID = CFO.CUSTOMIZE_FIELDS_ID\n" + sb.append(" INNER JOIN CUSTOMIZE_FIELDS CF ON CF.CUSTOMIZE_FIELD_ID = CFO.CUSTOMIZE_FIELDS_ID\n" +
"WHERE 1 = 1"); " WHERE 1 = 1");
sb.append(" and CFO.STATUS = 1"); sb.append(" and CFO.STATUS = 1");
sb.append(" and active = 1 "); sb.append(" and active = 1 ");
sb.append(" and CF.FUNCTION_CODE = 'CUSTOMER' "); sb.append(" and CF.FUNCTION_CODE = 'CUSTOMER' ");
List<CustomerQueryDTO> queryCustomer = new ArrayList<>();
for (int i = 0; i < queryCustomer.size(); i++) {
sb.append(queryCustomer.get(i).getJoin() + " " + for (int i = 0; i < campaignCustomerDTO.getListQuery().size(); i++) {
queryCustomer.get(i).getOperator() + " " + queryCustomer.get(i).getField() + " " + queryCustomer.get(i).getCondition());
}
sb.append( campaignCustomerDTO.getListQuery().get(i).getJoin() + " "
+ campaignCustomerDTO.getListQuery().get(i).getField() + " "
+ campaignCustomerDTO.getListQuery().get(i).getOperator() + " "
+ campaignCustomerDTO.getListQuery().get(i).getCondition());
}
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
query.addScalar("customerId", new LongType());
// query.setParameter("p_company_site_id", companySiteId);
// query.setParameter("p_customer_list_id", customerListId);
//
// if (!DataUtil.isNullOrEmpty(name)) {
// query.setParameter("p_name", "%" +
// name.replace("\\", "\\\\")
// .replaceAll("%", "\\%")
// .replaceAll("_", "\\_")
// + "%");
// }
//
// if (!DataUtil.isNullOrEmpty(mobileNumber)) {
// query.setParameter("p_mobile_number", "%" +
// mobileNumber.replace("\\", "\\\\")
// .replaceAll("%", "\\%")
// .replaceAll("_", "\\_")
// + "%");
// }
//
// if (!DataUtil.isNullOrEmpty(email)) {
// query.setParameter("p_email", "%" +
// email.replace("\\", "\\\\")
// .replaceAll("%", "\\%")
// .replaceAll("_", "\\_")
// + "%");
// }
query.addScalar("customerID", new LongType());
query.addScalar("name", new StringType());
query.addScalar("username", new StringType());
query.addScalar("name", new StringType()); query.addScalar("name", new StringType());
query.addScalar("description", new StringType()); query.addScalar("userName", new StringType());
query.addScalar("companyName", new StringType()); query.addScalar("companyName", new StringType());
query.addScalar("customerType", new StringType()); query.addScalar("customerType", new LongType());
query.addScalar("currentAddress", new StringType()); query.addScalar("currentAddress", new StringType());
query.addScalar("mobileNumber", new StringType()); query.addScalar("mobileNumber", new StringType());
query.addScalar("email", new StringType()); query.addScalar("email", new StringType());
query.addScalar("placeOfBirth",new StringType());
query.addScalar("dateOfBirth", new DateType());
query.addScalar("status", new ShortType());
query.addScalar("siteId",new LongType());
query.addScalar("active",new StringType());
query.setResultTransformer(Transformers.aliasToBean(CustomizeRequestDTo.class));
query.setResultTransformer(Transformers.aliasToBean(CampaignCustomerDTO.class));
int count = 0; int count = 0;
List<CustomerCustomDTO> dtoList = query.list(); List<CampaignCustomerDTO> dtoList = query.list();
if (dtoList.size() > 0) { if (dtoList.size() > 0) {
count = query.list().size(); count = query.list().size();
} }
Pageable pageable = PageRequest.of(page, pageSize); Pageable pageable = PageRequest.of( campaignCustomerDTO.getPage(), campaignCustomerDTO.getPageSize());
if (pageable != null) { if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize()); query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize()); query.setMaxResults(pageable.getPageSize());
} }
List<CustomerCustomDTO> data = query.list(); List<CampaignCustomerDTO> data = query.list();
Page<CustomerCustomDTO> dataPage = new PageImpl<>(data, pageable, count); Page<CampaignCustomerDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage); resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) { } catch (Exception e) {
LOGGER.error(e.getMessage(), e);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally { } finally {
......
package com.viettel.campaign.web.dto; package com.viettel.campaign.web.dto;
import com.viettel.campaign.web.dto.request_dto.CustomerQueryDTO;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date; import java.util.Date;
import java.util.List;
@Getter @Getter
@Setter @Setter
...@@ -27,4 +29,7 @@ public class CampaignCustomerDTO extends BaseDTO{ ...@@ -27,4 +29,7 @@ public class CampaignCustomerDTO extends BaseDTO{
private Long companySiteId; private Long companySiteId;
private Long complainId; private Long complainId;
private String lstCustomerId; private String lstCustomerId;
private List<CustomerQueryDTO> listQuery;
} }
package com.viettel.campaign.web.dto; package com.viettel.campaign.web.dto;
import com.viettel.campaign.web.dto.request_dto.CustomerQueryDTO;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date; import java.util.Date;
import java.util.List;
@Getter @Getter
@Setter @Setter
...@@ -29,4 +31,5 @@ public class CustomizeFieldsDTO extends BaseDTO { ...@@ -29,4 +31,5 @@ public class CustomizeFieldsDTO extends BaseDTO {
private Long min; private Long min;
private Long max; private Long max;
private Long active; private Long active;
} }
...@@ -11,4 +11,5 @@ public class CustomerQueryDTO extends BaseDTO { ...@@ -11,4 +11,5 @@ public class CustomerQueryDTO extends BaseDTO {
String field; String field;
String operator; String operator;
String condition; String condition;
} }
...@@ -12,6 +12,7 @@ import com.viettel.campaign.utils.Config; ...@@ -12,6 +12,7 @@ import com.viettel.campaign.utils.Config;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.RedisUtil; import com.viettel.campaign.utils.RedisUtil;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CustomerQueryDTO;
import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.CustomizeRequestDTo; import com.viettel.campaign.web.dto.request_dto.CustomizeRequestDTo;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
...@@ -322,4 +323,13 @@ public class CustomerController { ...@@ -322,4 +323,13 @@ public class CustomerController {
ResultDTO resultDTO = customerService.listCustomizeFields(customizeRequestDTo); ResultDTO resultDTO = customerService.listCustomizeFields(customizeRequestDTo);
return new ResponseEntity<>(resultDTO, HttpStatus.OK); return new ResponseEntity<>(resultDTO, HttpStatus.OK);
} }
@PostMapping("/searchCustomizeFields")
@ResponseBody
public ResponseEntity searchCustomizeFields(@RequestBody CampaignCustomerDTO campaignCustomerDTO ) {
ResultDTO result = customerService.searchCustomizeFields(campaignCustomerDTO);
return new ResponseEntity<>(result, HttpStatus.OK);
}
} }
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