Commit d633103b authored by Phạm Duy Phi's avatar Phạm Duy Phi

phipd commit

parent 538f07c9
...@@ -11,23 +11,16 @@ import java.util.List; ...@@ -11,23 +11,16 @@ import java.util.List;
public interface CustomerListMappingRepository extends JpaRepository<CustomerListMapping, Long> { public interface CustomerListMappingRepository extends JpaRepository<CustomerListMapping, Long> {
// ----------- customer ------------ // // ----------- customer ------------ //
@Query("select c from CustomerListMapping c where c.customerId in (:p_ids) and c.customerListId =:p_customer_list_id and c.companySiteId=:p_company_site_id") @Query("select c from CustomerListMapping c where c.customerId in (:p_ids) and c.customerListId =:p_customer_list_id and c.companySiteId=:p_company_site_id")
List<CustomerListMapping> findAllCustomerListMapping(@Param("p_ids") List<Long> p_ids, @Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id); List<CustomerListMapping> findAllCustomerListMapping(@Param("p_ids") List<Long> p_ids, @Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Modifying
@Query("delete from CustomerListMapping c where c.customerId=:p_customer_id and c.customerListId=:p_customer_list_id and c.companySiteId=:p_company_site_id")
int deleteMappingByCustomerId(@Param("p_customer_id") Long p_customer_id, @Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Modifying @Modifying
@Query("delete from CustomerListMapping c where c.customerId in (:p_ids) and c.customerListId =:p_customer_list_id and c.companySiteId=:p_company_site_id") @Query("delete from CustomerListMapping c where c.customerId in (:p_ids) and c.customerListId =:p_customer_list_id and c.companySiteId=:p_company_site_id")
int deleteMappingByCustomerIds(@Param("p_ids") List<Long> p_ids, @Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id); int deleteMappingByCustomerIds(@Param("p_ids") List<Long> p_ids, @Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
// ----------- customer list --------------- // // ----------- customer list --------------- //
@Modifying
@Query("delete from CustomerListMapping c where c.customerListId=:p_customer_list_id and c.companySiteId=:p_company_site_id")
int deleteMappingByCustomerListId(@Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Modifying @Modifying
@Query("delete from CustomerListMapping c where c.customerListId in (:p_ids) and c.companySiteId=:p_company_site_id") @Query("delete from CustomerListMapping c where c.customerListId in (:p_ids) and c.companySiteId=:p_company_site_id")
int deleteMappingByCustomerListIds(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id); int deleteMappingByCustomerListIds(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id);
......
...@@ -17,14 +17,7 @@ public interface CustomerListRepository extends JpaRepository<CustomerList, Long ...@@ -17,14 +17,7 @@ public interface CustomerListRepository extends JpaRepository<CustomerList, Long
@Query("select c from CustomerList c where c.customerListId in (:p_ids) and c.companySiteId=:p_company_site_id and c.status = 1") @Query("select c from CustomerList c where c.customerListId in (:p_ids) and c.companySiteId=:p_company_site_id and c.status = 1")
List<CustomerList> findAllCustomerList(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id); List<CustomerList> findAllCustomerList(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id);
@Modifying
@Query("update CustomerList c set c.status = 0 where c.customerListId=:p_customer_list_id and c.companySiteId=:p_company_site_id")
int deleteCustomerList(@Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Modifying @Modifying
@Query("update CustomerList c set c.status = 0 where c.customerListId in (:p_ids) and c.companySiteId=:p_company_site_id") @Query("update CustomerList c set c.status = 0 where c.customerListId in (:p_ids) and c.companySiteId=:p_company_site_id")
int deleteCustomerListIds(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id); int deleteCustomerListIds(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id);
@Query(value = "SELECT * FROM (SELECT c.*, MAX(c.CREATE_AT) OVER() AS LATEST_CREATED FROM CUSTOMER_LIST c) WHERE CREATE_AT = LATEST_CREATED AND COMPANY_SITE_ID =:p_company_site_id", nativeQuery = true)
CustomerList latestCreated(@Param("p_company_site_id") Long p_company_site_id);
} }
package com.viettel.campaign.repository.ccms_full; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.CustomerCustomDTO; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CustomerDetailRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerDetailRequestDTO;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import com.viettel.econtact.filter.UserSession;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import java.util.List; import java.util.List;
...@@ -12,4 +13,12 @@ public interface CustomerRepositoryCustom { ...@@ -12,4 +13,12 @@ public interface CustomerRepositoryCustom {
List<CustomerDetailRequestDTO> getCustomerDetailById(Long companySiteId, Long customerListId, Long customerId); List<CustomerDetailRequestDTO> getCustomerDetailById(Long companySiteId, Long customerListId, Long customerId);
List<CustomerCustomDTO> getAllCustomerByParams(SearchCustomerRequestDTO searchCustomerRequestDTO, Pageable pageable); List<CustomerCustomDTO> getAllCustomerByParams(SearchCustomerRequestDTO searchCustomerRequestDTO, Pageable pageable);
List<CampaignInformationDTO> getCampaignInformation(CampaignCustomerDTO campaignCustomerDTO);
List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO);
List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO);
List<CustomerDTO> getCustomizeFields(CampaignCustomerDTO campaignCustomerDTO, UserSession userSession, Pageable pageable);
} }
...@@ -523,8 +523,8 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -523,8 +523,8 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
query.setParameter("pCampaignName", "%" + query.setParameter("pCampaignName", "%" +
campaignRequestDto.getCampaignName().toUpperCase() campaignRequestDto.getCampaignName().toUpperCase()
.replace("\\", "\\\\") .replace("\\", "\\\\")
.replaceAll("%", "\\\\%") .replaceAll("%", "\\%")
.replaceAll("_", "\\\\_") .replaceAll("_", "\\_")
+ "%"); + "%");
} }
......
package com.viettel.campaign.repository.ccms_full.impl; package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.ccms_full.CustomerRepositoryCustom; import com.viettel.campaign.repository.ccms_full.CustomerRepositoryCustom;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil; import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil; import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.web.dto.CustomerCustomDTO; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CustomerDetailRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerDetailRequestDTO;
import com.viettel.campaign.web.dto.request_dto.CustomerQueryDTO;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import com.viettel.econtact.filter.UserSession;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
...@@ -16,14 +17,25 @@ import org.hibernate.type.DateType; ...@@ -16,14 +17,25 @@ import org.hibernate.type.DateType;
import org.hibernate.type.LongType; import org.hibernate.type.LongType;
import org.hibernate.type.ShortType; import org.hibernate.type.ShortType;
import org.hibernate.type.StringType; import org.hibernate.type.StringType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.*; import org.springframework.data.domain.*;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Repository @Repository
public class CustomerRepositoryImpl implements CustomerRepositoryCustom { public class CustomerRepositoryImpl implements CustomerRepositoryCustom {
@Autowired
@Qualifier(DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL)
NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Override @Override
public List<CustomerDetailRequestDTO> getCustomerDetailById(Long companySiteId, Long customerListId, Long customerId) { public List<CustomerDetailRequestDTO> getCustomerDetailById(Long companySiteId, Long customerListId, Long customerId) {
List<CustomerDetailRequestDTO> data = new ArrayList<>(); List<CustomerDetailRequestDTO> data = new ArrayList<>();
...@@ -194,4 +206,366 @@ public class CustomerRepositoryImpl implements CustomerRepositoryCustom { ...@@ -194,4 +206,366 @@ public class CustomerRepositoryImpl implements CustomerRepositoryCustom {
return data; return data;
} }
@Override
public List<CampaignInformationDTO> getCampaignInformation(CampaignCustomerDTO campaignCustomerDTO) {
List<CampaignInformationDTO> list = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
try {
StringBuilder sb = new StringBuilder();
sb.append(" with count_customer as (");
sb.append(" select campaign_id campaignId,");
sb.append(" sum(case");
sb.append(" when customer_list_id is null then 1");
sb.append(" else 0");
sb.append(" end) totalIndividual,");
sb.append(" sum(case");
sb.append(" when customer_list_id is not null then 1");
sb.append(" else 0");
sb.append(" end) totalCusInList");
sb.append(" from campaign_customer");
sb.append(" group by campaign_id");
sb.append(" )");
sb.append(" select b.campaign_id campaignId, nvl(totalIndividual, 0) totalIndividual, nvl(totalCusInList, 0) totalCusInList, b.customer_number campaignCustomer");
sb.append(" from campaign b");
sb.append(" left join count_customer a on a.campaignId = b.campaign_id");
sb.append(" where b.campaign_id = :p_campaign_id");
params.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
params.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(CampaignInformationDTO.class));
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
@Override
public List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO) {
List<CustomerDTO> customerList = new ArrayList<>();
try {
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-individual-customer");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder sb = new StringBuilder();
sb.append("with cusPhone as (");
sb.append(" select customer_id cusId,");
sb.append(" listagg(contact, ', ') within group (order by create_date desc) phone");
sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 5");
sb.append(" and status = 1 ");
sb.append(" group by customer_id");
sb.append(" ), cusEmail as (");
sb.append(" select customer_id cusId,");
sb.append(" listagg(contact , ', ') within group(order by create_date desc) email");
sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 2");
sb.append(" and status = 1 ");
sb.append(" group by customer_id");
sb.append(" )," +
"cusInCampaign as (" +
"select * from campaign_customer " +
"where campaign_id = :p_campaign_id " +
"and company_site_id = :p_company_site_id " +
"and customer_list_id is null " +
"and in_campaign_status = 1");
sb.append(" ), datas as (");
sb.append(" select c.customer_id customerId,");
sb.append(" c.name,");
sb.append(" cP.phone mobileNumber,");
sb.append(" cE.email,");
sb.append(" c.customer_type customerType,");
sb.append(" c.company_name companyName,");
sb.append(" c.current_address currentAddress,");
sb.append(" c.description,");
sb.append(" c.ipcc_status ipccStatus,");
sb.append(" c.call_allowed customerDnc");
sb.append(" from customer c");
sb.append(" inner join cusInCampaign cc on c.customer_id = cc.customer_id");
sb.append(" left join cusPhone cP on c.customer_id = cP.cusId");
sb.append(" left join cusEmail cE on c.customer_id = cE.cusId");
sb.append(" )");
sb.append(" select * from");
sb.append(" (");
sb.append(" select a.*, rownum r__");
sb.append(" from");
sb.append(" (");
sb.append(" select * from datas");
sb.append(" order by UPPER(datas.name)");
sb.append(" ) a");
sb.append(" where rownum < ((:p_page_number * :p_page_size) + 1 )");
sb.append(" )");
sb.append(" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)");
Map<String, Object> param = new HashMap<>();
param.put("p_page_number", campaignCustomerDTO.getPage());
param.put("p_page_size", campaignCustomerDTO.getPageSize());
param.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
param.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
customerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomerDTO.class));
} catch (Exception e) {
e.printStackTrace();
}
return customerList;
}
@Override
public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) {
List<CustomerListDTO> customerList = new ArrayList<>();
try {
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-customer-list-info-from-customer-list");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder sb = new StringBuilder();
sb.append(" with totalCustomer as (");
sb.append(" select clm.customer_list_id,");
sb.append(" clm.company_site_id,");
sb.append(" count(clm.customer_id) total");
sb.append(" from customer_list_mapping clm");
sb.append(" inner join customer c on clm.customer_id = c.customer_id");
sb.append(" where c.status = 1");
sb.append(" group by clm.customer_list_id,clm.company_site_id");
sb.append(" ), customerInteractive as (");
sb.append(" select customer_list_id,");
sb.append(" company_site_id,");
sb.append(" count(customer_id) tt");
sb.append(" from campaign_customer where campaign_id = :p_campaign_id and status <> 0");
sb.append(" group by customer_list_id, company_site_id");
sb.append(" ), customerNotInteractive as (");
sb.append(" select customer_list_id,");
sb.append(" company_site_id,");
sb.append(" count(customer_id) ktt");
sb.append(" from campaign_customer where campaign_id = :p_campaign_id and status = 0");
sb.append(" and in_campaign_status = 1");
sb.append(" group by customer_list_id, company_site_id");
sb.append(" ), datas as (");
sb.append(" select customer_list_code customerListCode,");
sb.append(" customer_list_name customerListName,");
sb.append(" nvl(total, 0) totalCusInList,");
sb.append(" nvl(tt, 0) totalCusInteract,");
sb.append(" nvl(ktt, 0) totalCusNotInteract");
sb.append(" from customer_list cl");
sb.append(" left join totalCustomer tc on (cl.customer_list_id = tc.customer_list_id and cl.company_site_id = tc.company_site_id)");
sb.append(" left join customerInteractive ci on (cl.customer_list_id = ci.customer_list_id and cl.company_site_id = ci.company_site_id)");
sb.append(" left join customerNotInteractive cni on (cl.customer_list_id = cni.customer_list_id and cl.company_site_id = cni.company_site_id)");
sb.append(" where cl.company_site_id = :p_company_site_id");
sb.append(" )");
sb.append(" select * from");
sb.append(" (");
sb.append(" select a.*, rownum r__");
sb.append(" from");
sb.append(" (");
sb.append(" select * from datas");
sb.append(" order by customerListCode");
sb.append(" ) a");
sb.append(" where rownum < ((:p_page_number * :p_page_size) + 1 )");
sb.append(" )");
sb.append(" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)");
Map<String, Object> param = new HashMap<>();
param.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
param.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
param.put("p_page_number", campaignCustomerDTO.getPage());
param.put("p_page_size", campaignCustomerDTO.getPageSize());
customerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomerListDTO.class));
} catch (Exception e) {
e.printStackTrace();
}
return customerList;
}
@Override
public List<CustomerDTO> getCustomizeFields(CampaignCustomerDTO campaignCustomerDTO, UserSession userSession, Pageable pageable) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
List<CustomerDTO> data = new ArrayList<>();
Session session = sessionFactory.openSession();
session.beginTransaction();
Map<String, String> requestCustomer = new HashMap<>();
requestCustomer.put("-1", "c.code");
requestCustomer.put("-2", "c.name");
requestCustomer.put("-3", "c.company_name");
requestCustomer.put("-4", "c.gender");
requestCustomer.put("-5", "c.current_address");
requestCustomer.put("-6", "c.place_of_birth");
requestCustomer.put("-7", "c.date_of_birth");
requestCustomer.put("-8", "cc.contact");
requestCustomer.put("-9", "cc2.contact");
requestCustomer.put("-10", "c.username");
requestCustomer.put("-11", "c.customer_type");
requestCustomer.put("-12", "c.area_code");
requestCustomer.put("-13", "c.call_allowed");
requestCustomer.put("-14", "c.email_allowed");
requestCustomer.put("-15", "c.sms_allowed");
requestCustomer.put("-16", "c.ipcc_status");
try {
StringBuilder sb = new StringBuilder();
sb.append("select distinct c.customer_id customerId,");
sb.append(" C.NAME name,");
sb.append(" cc.CONTACT mobileNumber,");
sb.append(" cc2.CONTACT email,");
sb.append(" c.customer_type customerType,");
sb.append(" C.COMPANY_NAME companyName,");
sb.append(" c.current_address currentAddress,");
sb.append(" c.Description description");
sb.append(" FROM CUSTOMER C");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY ");
sb.append(" NULL) AS CONTACT");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 AND STATUS = 1 GROUP BY ");
sb.append(" CUSTOMER_ID) cc on c.CUSTOMER_ID = cc.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY ");
sb.append(" NULL) AS CONTACT");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 AND STATUS = 1 GROUP BY ");
sb.append(" CUSTOMER_ID) cc2 on cc2.CUSTOMER_ID = c.CUSTOMER_ID ");
sb.append(" left join customize_field_object cfo on c.customer_id = cfo.object_id and cfo.status = 1");
sb.append(" AND C.STATUS = 1");
sb.append(" AND C.customer_id not in (select customer_id from campaign_customer where campaign_id = :p_campaign_id) ");
sb.append(" where 1 = 1 AND C.STATUS = 1 AND C.SITE_ID = :p_site_id ");
List<CustomerQueryDTO> customerDTOList = campaignCustomerDTO.getListQuery();
if (customerDTOList.get(0).getField() > 0) {// field dong
switch (customerDTOList.get(0).getType()) {
case "combobox":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.field_option_value_id " + customerDTOList.get(0).getOperator() + " " + customerDTOList.get(0).getCondition() + ")");
break;
case "text":
if ("like".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and upper(cfo.value_text) " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else {
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_text " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
}
if ("not like".equals(customerDTOList.get(0).getOperator()) || "<>".equals(customerDTOList.get(0).getOperator())) {
sb.append(" or cfo.value_text is null");
}
sb.append(" )");
break;
case "date":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and (cfo.value_date +" + campaignCustomerDTO.getTimezoneOffset() + "/24)" + customerDTOList.get(0).getOperator() + " to_date('" + customerDTOList.get(0).getCondition().trim() + "', 'DD/MM/YYYY'))");
break;
case "number":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_number " + customerDTOList.get(0).getOperator() + " " + customerDTOList.get(0).getCondition() + ")");
break;
case "checkbox":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_checkbox " + customerDTOList.get(0).getOperator() + " " + ("true".equals(customerDTOList.get(0).getCondition()) ? "1" : "0") + ")");
break;
}
} else {// field tinh
if ("like".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (upper(" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + ") " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else if (customerDTOList.get(0).getField() == -8 || customerDTOList.get(0).getField() == -9) {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + ("=".equals(customerDTOList.get(0).getOperator()) ? "like " : "not like") + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "%'");
} else if ("text".equals(customerDTOList.get(0).getType())) {
if ("=".equals(customerDTOList.get(0).getOperator()) || "<>".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
} else {
sb.append("and (upper(" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + ") " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
}
} else {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + customerDTOList.get(0).getOperator() + " " + customerDTOList.get(0).getCondition());
}
if ("<>".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append(" or " + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " is null ");
}
sb.append(" )");
}
for (int i = 1; i < campaignCustomerDTO.getListQuery().size(); i++) {
if (customerDTOList.get(i).getField() < 0) { //Field tinh
if ("like".equals(customerDTOList.get(i).getOperator()) || "not like".equals(customerDTOList.get(i).getOperator())) {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ "upper(" + requestCustomer.get(customerDTOList.get(i).getField().toString()) + ") "
+ customerDTOList.get(i).getOperator() + " "
+ "'%" + customerDTOList.get(i).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
} else if (customerDTOList.get(i).getField() == -8 || customerDTOList.get(i).getField() == -9) {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ ("=".equals(customerDTOList.get(i).getOperator()) ? "like" : "not like") + " '%"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
} else if ("text".equals(customerDTOList.get(i).getType())) {
if ("=".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ customerDTOList.get(i).getOperator() + " '"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "' ");
} else {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ "upper(" + requestCustomer.get(customerDTOList.get(i).getField().toString()) + ") "
+ customerDTOList.get(i).getOperator() + " '%"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
}
} else {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ customerDTOList.get(i).getOperator() + " "
+ customerDTOList.get(i).getCondition());
}
if ("not like".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" or " + requestCustomer.get(customerDTOList.get(i).getField().toString()) + " is null");
}
sb.append(" )");
} else { // Field dong
switch (customerDTOList.get(i).getType()) {
case "combobox":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.field_option_value_id " + customerDTOList.get(i).getOperator() + " " + customerDTOList.get(i).getCondition() + ")");
break;
case "text":
if ("like".equals(customerDTOList.get(i).getOperator()) || "not like".equals(customerDTOList.get(i).getOperator())) {
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and upper(cfo.value_text) " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else {
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_text " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
}
if ("not like".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" or cfo.value_text is null ");
}
sb.append(" )");
break;
case "date":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and (cfo.value_date + " + campaignCustomerDTO.getTimezoneOffset() + "/24)" + customerDTOList.get(i).getOperator() + " to_date('" + customerDTOList.get(i).getCondition().trim() + "', 'DD/MM/YYYY'))");
break;
case "number":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.value_number " + customerDTOList.get(i).getOperator() + " " + customerDTOList.get(i).getCondition() + ")");
break;
case "checkbox":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.value_checkbox " + customerDTOList.get(i).getOperator() + " " + ("true".equals(customerDTOList.get(i).getCondition()) ? "1" : "0") + ")");
break;
}
}
}
SQLQuery query = session.createSQLQuery(sb.toString());
query.addScalar("name", new StringType());
query.addScalar("customerId", new LongType());
query.addScalar("mobileNumber", new StringType());
query.addScalar("email", new StringType());
query.addScalar("customerType", new LongType());
query.addScalar("companyName", new StringType());
query.addScalar("currentAddress", new StringType());
query.addScalar("description", new StringType());
query.setParameter("p_campaign_id", campaignCustomerDTO.getCampaignId());
query.setParameter("p_site_id", userSession.getSiteId());
query.setResultTransformer(Transformers.aliasToBean(CustomerDTO.class));
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
data = query.list();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
return data;
}
} }
...@@ -35,14 +35,10 @@ public interface CustomerService { ...@@ -35,14 +35,10 @@ public interface CustomerService {
ResultDTO updateCustomerList(CustomerListDTO customerListDTO, String userName); ResultDTO updateCustomerList(CustomerListDTO customerListDTO, String userName);
ResultDTO deleteCustomerList(CustomerListDTO customerListDTO);
ResultDTO deleteCustomerListIds(CustomerRequestDTO customerRequestDTO); ResultDTO deleteCustomerListIds(CustomerRequestDTO customerRequestDTO);
ResultDTO searchCustomerList(SearchCustomerListRequestDTO searchCustomerListRequestDTO); ResultDTO searchCustomerList(SearchCustomerListRequestDTO searchCustomerListRequestDTO);
CustomerList getLatestCreated(Long companySiteId);
// ------------ customer contact ------------ // // ------------ customer contact ------------ //
ResultDTO getCustomerContact(CustomerContactDTO customer); ResultDTO getCustomerContact(CustomerContactDTO customer);
......
...@@ -342,39 +342,6 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -342,39 +342,6 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO; return resultDTO;
} }
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteCustomerList(CustomerListDTO customerListDTO) {
ResultDTO resultDTO = new ResultDTO();
List<Long> ids = new ArrayList<>();
ids.add(customerListDTO.getCustomerListId());
try {
// delete
if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignCount(customerListDTO.getCustomerListId()))) {
if (customerListRepository.findAllCustomerList(ids, customerListDTO.getCompanySiteId()).size() > 0) {
customerListRepository.deleteCustomerList(customerListDTO.getCustomerListId(), customerListDTO.getCompanySiteId());
customerListMappingRepository.deleteMappingByCustomerListId(customerListDTO.getCustomerListId(), customerListDTO.getCompanySiteId());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.DELETE_ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.DELETE_ERROR);
}
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
// e.printStackTrace();
}
return resultDTO;
}
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteCustomerListIds(CustomerRequestDTO customerRequestDTO) { public ResultDTO deleteCustomerListIds(CustomerRequestDTO customerRequestDTO) {
...@@ -437,12 +404,6 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -437,12 +404,6 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO; return resultDTO;
} }
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public CustomerList getLatestCreated(Long companySiteId) {
return customerListRepository.latestCreated(companySiteId);
}
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCustomerContact(CustomerContactDTO customer) { public ResultDTO getCustomerContact(CustomerContactDTO customer) {
...@@ -1421,63 +1382,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1421,63 +1382,7 @@ public class CustomerServiceImpl implements CustomerService {
public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) { public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) {
List<CustomerListDTO> customerList; List<CustomerListDTO> customerList;
try { try {
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-customer-list-info-from-customer-list"); customerList = customerRepository.getCustomerListInfo(campaignCustomerDTO);
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder sb = new StringBuilder();
sb.append(" with totalCustomer as (");
sb.append(" select clm.customer_list_id,");
sb.append(" clm.company_site_id,");
sb.append(" count(clm.customer_id) total");
sb.append(" from customer_list_mapping clm");
sb.append(" inner join customer c on clm.customer_id = c.customer_id");
sb.append(" where c.status = 1");
sb.append(" group by clm.customer_list_id,clm.company_site_id");
sb.append(" ), customerInteractive as (");
sb.append(" select customer_list_id,");
sb.append(" company_site_id,");
sb.append(" count(customer_id) tt");
sb.append(" from campaign_customer where campaign_id = :p_campaign_id and status <> 0");
sb.append(" group by customer_list_id, company_site_id");
sb.append(" ), customerNotInteractive as (");
sb.append(" select customer_list_id,");
sb.append(" company_site_id,");
sb.append(" count(customer_id) ktt");
sb.append(" from campaign_customer where campaign_id = :p_campaign_id and status = 0");
sb.append(" and in_campaign_status = 1");
sb.append(" group by customer_list_id, company_site_id");
sb.append(" ), datas as (");
sb.append(" select customer_list_code customerListCode,");
sb.append(" customer_list_name customerListName,");
sb.append(" nvl(total, 0) totalCusInList,");
sb.append(" nvl(tt, 0) totalCusInteract,");
sb.append(" nvl(ktt, 0) totalCusNotInteract");
sb.append(" from customer_list cl");
sb.append(" left join totalCustomer tc on (cl.customer_list_id = tc.customer_list_id and cl.company_site_id = tc.company_site_id)");
sb.append(" left join customerInteractive ci on (cl.customer_list_id = ci.customer_list_id and cl.company_site_id = ci.company_site_id)");
sb.append(" left join customerNotInteractive cni on (cl.customer_list_id = cni.customer_list_id and cl.company_site_id = cni.company_site_id)");
sb.append(" where cl.company_site_id = :p_company_site_id");
sb.append(" )");
sb.append(" select * from");
sb.append(" (");
sb.append(" select a.*, rownum r__");
sb.append(" from");
sb.append(" (");
sb.append(" select * from datas");
sb.append(" order by customerListCode");
sb.append(" ) a");
sb.append(" where rownum < ((:p_page_number * :p_page_size) + 1 )");
sb.append(" )");
sb.append(" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)");
Map<String, Object> param = new HashMap<>();
param.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
param.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
param.put("p_page_number", campaignCustomerDTO.getPage());
param.put("p_page_size", campaignCustomerDTO.getPageSize());
customerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomerListDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
...@@ -1487,69 +1392,9 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1487,69 +1392,9 @@ public class CustomerServiceImpl implements CustomerService {
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO) { public List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO) {
List<CustomerDTO> customerList; List<CustomerDTO> customerList = new ArrayList<>();
try { try {
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-individual-customer"); customerList = customerRepository.getIndividualCustomerInfo(campaignCustomerDTO);
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder sb = new StringBuilder();
sb.append("with cusPhone as (");
sb.append(" select customer_id cusId,");
sb.append(" listagg(contact, ', ') within group (order by create_date desc) phone");
sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 5");
sb.append(" and status = 1 ");
sb.append(" group by customer_id");
sb.append(" ), cusEmail as (");
sb.append(" select customer_id cusId,");
sb.append(" listagg(contact , ', ') within group(order by create_date desc) email");
sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 2");
sb.append(" and status = 1 ");
sb.append(" group by customer_id");
sb.append(" )," +
"cusInCampaign as (" +
"select * from campaign_customer " +
"where campaign_id = :p_campaign_id " +
"and company_site_id = :p_company_site_id " +
"and customer_list_id is null " +
"and in_campaign_status = 1");
sb.append(" ), datas as (");
sb.append(" select c.customer_id customerId,");
sb.append(" c.name,");
sb.append(" cP.phone mobileNumber,");
sb.append(" cE.email,");
sb.append(" c.customer_type customerType,");
sb.append(" c.company_name companyName,");
sb.append(" c.current_address currentAddress,");
sb.append(" c.description,");
sb.append(" c.ipcc_status ipccStatus,");
sb.append(" c.call_allowed customerDnc");
sb.append(" from customer c");
sb.append(" inner join cusInCampaign cc on c.customer_id = cc.customer_id");
sb.append(" left join cusPhone cP on c.customer_id = cP.cusId");
sb.append(" left join cusEmail cE on c.customer_id = cE.cusId");
sb.append(" )");
sb.append(" select * from");
sb.append(" (");
sb.append(" select a.*, rownum r__");
sb.append(" from");
sb.append(" (");
sb.append(" select * from datas");
sb.append(" order by UPPER(datas.name)");
sb.append(" ) a");
sb.append(" where rownum < ((:p_page_number * :p_page_size) + 1 )");
sb.append(" )");
sb.append(" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)");
Map<String, Object> param = new HashMap<>();
param.put("p_page_number", campaignCustomerDTO.getPage());
param.put("p_page_size", campaignCustomerDTO.getPageSize());
param.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
param.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
customerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomerDTO.class));
} catch (Exception e) { } catch (Exception e) {
LOGGER.error(e.getMessage(), e); LOGGER.error(e.getMessage(), e);
return null; return null;
...@@ -1591,30 +1436,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1591,30 +1436,8 @@ public class CustomerServiceImpl implements CustomerService {
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchCampaignInformation(CampaignCustomerDTO campaignCustomerDTO) { public ResultDTO searchCampaignInformation(CampaignCustomerDTO campaignCustomerDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
List<CampaignInformationDTO> list = new ArrayList<>(); List<CampaignInformationDTO> list = customerRepository.getCampaignInformation(campaignCustomerDTO);
Map<String, Object> params = new HashMap<>();
try { try {
StringBuilder sb = new StringBuilder();
sb.append(" with count_customer as (");
sb.append(" select campaign_id campaignId,");
sb.append(" sum(case");
sb.append(" when customer_list_id is null then 1");
sb.append(" else 0");
sb.append(" end) totalIndividual,");
sb.append(" sum(case");
sb.append(" when customer_list_id is not null then 1");
sb.append(" else 0");
sb.append(" end) totalCusInList");
sb.append(" from campaign_customer");
sb.append(" group by campaign_id");
sb.append(" )");
sb.append(" select b.campaign_id campaignId, nvl(totalIndividual, 0) totalIndividual, nvl(totalCusInList, 0) totalCusInList, b.customer_number campaignCustomer");
sb.append(" from campaign b");
sb.append(" left join count_customer a on a.campaignId = b.campaign_id");
sb.append(" where b.campaign_id = :p_campaign_id");
params.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
params.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(CampaignInformationDTO.class));
if (list.size() > 0) { if (list.size() > 0) {
resultDTO.setData(list.get(0)); resultDTO.setData(list.get(0));
} else { } else {
...@@ -1797,195 +1620,10 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1797,195 +1620,10 @@ public class CustomerServiceImpl implements CustomerService {
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchCustomizeFields(CampaignCustomerDTO campaignCustomerDTO, UserSession userSession) { public ResultDTO searchCustomizeFields(CampaignCustomerDTO campaignCustomerDTO, UserSession userSession) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
Map<String, String> requestCustomer = new HashMap<>();
requestCustomer.put("-1", "c.code");
requestCustomer.put("-2", "c.name");
requestCustomer.put("-3", "c.company_name");
requestCustomer.put("-4", "c.gender");
requestCustomer.put("-5", "c.current_address");
requestCustomer.put("-6", "c.place_of_birth");
requestCustomer.put("-7", "c.date_of_birth");
requestCustomer.put("-8", "cc.contact");
requestCustomer.put("-9", "cc2.contact");
requestCustomer.put("-10", "c.username");
requestCustomer.put("-11", "c.customer_type");
requestCustomer.put("-12", "c.area_code");
requestCustomer.put("-13", "c.call_allowed");
requestCustomer.put("-14", "c.email_allowed");
requestCustomer.put("-15", "c.sms_allowed");
requestCustomer.put("-16", "c.ipcc_status");
try { try {
StringBuilder sb = new StringBuilder(); int count = customerRepository.getCustomizeFields(campaignCustomerDTO, userSession, null).size();
List<CustomerDTO> data = customerRepository.getCustomizeFields(campaignCustomerDTO, userSession, SQLBuilder.buildPageable(campaignCustomerDTO));
sb.append("select distinct c.customer_id customerId,"); resultDTO.setListData(data);
sb.append(" C.NAME name,");
sb.append(" cc.CONTACT mobileNumber,");
sb.append(" cc2.CONTACT email,");
sb.append(" c.customer_type customerType,");
sb.append(" C.COMPANY_NAME companyName,");
sb.append(" c.current_address currentAddress,");
sb.append(" c.Description description");
sb.append(" FROM CUSTOMER C");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY ");
sb.append(" NULL) AS CONTACT");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 AND STATUS = 1 GROUP BY ");
sb.append(" CUSTOMER_ID) cc on c.CUSTOMER_ID = cc.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY ");
sb.append(" NULL) AS CONTACT");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 AND STATUS = 1 GROUP BY ");
sb.append(" CUSTOMER_ID) cc2 on cc2.CUSTOMER_ID = c.CUSTOMER_ID ");
sb.append(" left join customize_field_object cfo on c.customer_id = cfo.object_id and cfo.status = 1");
sb.append(" AND C.STATUS = 1");
sb.append(" AND C.customer_id not in (select customer_id from campaign_customer where campaign_id = :p_campaign_id) ");
sb.append(" where 1 = 1 AND C.STATUS = 1 AND C.SITE_ID = :p_site_id ");
List<CustomerQueryDTO> customerDTOList = campaignCustomerDTO.getListQuery();
if (customerDTOList.get(0).getField() > 0) {// field dong
switch (customerDTOList.get(0).getType()) {
case "combobox":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.field_option_value_id " + customerDTOList.get(0).getOperator() + " " + customerDTOList.get(0).getCondition() + ")");
break;
case "text":
if ("like".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and upper(cfo.value_text) " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else {
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_text " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
}
if ("not like".equals(customerDTOList.get(0).getOperator()) || "<>".equals(customerDTOList.get(0).getOperator())) {
sb.append(" or cfo.value_text is null");
}
sb.append(" )");
break;
case "date":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and (cfo.value_date +" + campaignCustomerDTO.getTimezoneOffset() + "/24)" + customerDTOList.get(0).getOperator() + " to_date('" + customerDTOList.get(0).getCondition().trim() + "', 'DD/MM/YYYY'))");
break;
case "number":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_number " + customerDTOList.get(0).getOperator() + " " + customerDTOList.get(0).getCondition() + ")");
break;
case "checkbox":
sb.append("and (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_checkbox " + customerDTOList.get(0).getOperator() + " " + ("true".equals(customerDTOList.get(0).getCondition()) ? "1" : "0") + ")");
break;
}
} else {// field tinh
if ("like".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (upper(" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + ") " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else if (customerDTOList.get(0).getField() == -8 || customerDTOList.get(0).getField() == -9) {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + ("=".equals(customerDTOList.get(0).getOperator()) ? "like " : "not like") + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "%'");
} else if ("text".equals(customerDTOList.get(0).getType())) {
if ("=".equals(customerDTOList.get(0).getOperator()) || "<>".equals(customerDTOList.get(0).getOperator())) {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
} else {
sb.append("and (upper(" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + ") " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
}
} else {
sb.append("and (" + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " " + customerDTOList.get(0).getOperator() + " " + customerDTOList.get(0).getCondition());
}
if ("<>".equals(customerDTOList.get(0).getOperator()) || "not like".equals(customerDTOList.get(0).getOperator())) {
sb.append(" or " + requestCustomer.get(customerDTOList.get(0).getField().toString()) + " is null ");
}
sb.append(" )");
}
for (int i = 1; i < campaignCustomerDTO.getListQuery().size(); i++) {
if (customerDTOList.get(i).getField() < 0) { //Field tinh
if ("like".equals(customerDTOList.get(i).getOperator()) || "not like".equals(customerDTOList.get(i).getOperator())) {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ "upper(" + requestCustomer.get(customerDTOList.get(i).getField().toString()) + ") "
+ customerDTOList.get(i).getOperator() + " "
+ "'%" + customerDTOList.get(i).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
} else if (customerDTOList.get(i).getField() == -8 || customerDTOList.get(i).getField() == -9) {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ ("=".equals(customerDTOList.get(i).getOperator()) ? "like" : "not like") + " '%"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
} else if ("text".equals(customerDTOList.get(i).getType())) {
if ("=".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ customerDTOList.get(i).getOperator() + " '"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "' ");
} else {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ "upper(" + requestCustomer.get(customerDTOList.get(i).getField().toString()) + ") "
+ customerDTOList.get(i).getOperator() + " '%"
+ customerDTOList.get(i).getCondition().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%' ");
}
} else {
sb.append(" " + customerDTOList.get(i).getJoin() + " ("
+ requestCustomer.get(customerDTOList.get(i).getField().toString()) + " "
+ customerDTOList.get(i).getOperator() + " "
+ customerDTOList.get(i).getCondition());
}
if ("not like".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" or " + requestCustomer.get(customerDTOList.get(i).getField().toString()) + " is null");
}
sb.append(" )");
} else { // Field dong
switch (customerDTOList.get(i).getType()) {
case "combobox":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.field_option_value_id " + customerDTOList.get(i).getOperator() + " " + customerDTOList.get(i).getCondition() + ")");
break;
case "text":
if ("like".equals(customerDTOList.get(i).getOperator()) || "not like".equals(customerDTOList.get(i).getOperator())) {
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and upper(cfo.value_text) " + customerDTOList.get(0).getOperator() + " '%" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_").toUpperCase() + "%'");
} else {
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(0).getField() + " and cfo.value_text " + customerDTOList.get(0).getOperator() + " '" + customerDTOList.get(0).getCondition().trim().replace("\\", "\\\\").replaceAll("%", "\\%").replaceAll("_", "\\_") + "'");
}
if ("not like".equals(customerDTOList.get(i).getOperator()) || "<>".equals(customerDTOList.get(i).getOperator())) {
sb.append(" or cfo.value_text is null ");
}
sb.append(" )");
break;
case "date":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and (cfo.value_date + " + campaignCustomerDTO.getTimezoneOffset() + "/24)" + customerDTOList.get(i).getOperator() + " to_date('" + customerDTOList.get(i).getCondition().trim() + "', 'DD/MM/YYYY'))");
break;
case "number":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.value_number " + customerDTOList.get(i).getOperator() + " " + customerDTOList.get(i).getCondition() + ")");
break;
case "checkbox":
sb.append(customerDTOList.get(i).getJoin() + " (cfo.customize_fields_id =" + customerDTOList.get(i).getField() + " and cfo.value_checkbox " + customerDTOList.get(i).getOperator() + " " + ("true".equals(customerDTOList.get(i).getCondition()) ? "1" : "0") + ")");
break;
}
}
}
SQLQuery query = session.createSQLQuery(sb.toString());
query.addScalar("name", new StringType());
query.addScalar("customerId", new LongType());
query.addScalar("mobileNumber", new StringType());
query.addScalar("email", new StringType());
query.addScalar("customerType", new LongType());
query.addScalar("companyName", new StringType());
query.addScalar("currentAddress", new StringType());
query.addScalar("description", new StringType());
query.setParameter("p_campaign_id", campaignCustomerDTO.getCampaignId());
query.setParameter("p_site_id", userSession.getSiteId());
query.setResultTransformer(Transformers.aliasToBean(CustomerDTO.class));
int count = 0;
List<CustomerDTO> dtoList = query.list();
if (dtoList.size() > 0) {
count = query.list().size();
}
Pageable pageable = PageRequest.of(campaignCustomerDTO.getPage(), campaignCustomerDTO.getPageSize());
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<CustomerDTO> data = query.list();
Page<CustomerDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
resultDTO.setTotalRow(count); resultDTO.setTotalRow(count);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
...@@ -1993,10 +1631,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1993,10 +1631,7 @@ public class CustomerServiceImpl implements CustomerService {
LOGGER.error(e.getMessage(), 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 {
session.close();
} }
return resultDTO; return resultDTO;
} }
......
...@@ -107,14 +107,6 @@ public class CustomerController { ...@@ -107,14 +107,6 @@ public class CustomerController {
return customerService.updateCustomerList(customerListDTO, userSession.getUserName()); return customerService.updateCustomerList(customerListDTO, userSession.getUserName());
} }
@PostMapping("/deleteCustomerList")
@ResponseBody
public ResultDTO deleteCustomerList(@RequestBody @Valid CustomerListDTO customerListDTO) {
ResultDTO result = new ResultDTO();
result = customerService.deleteCustomerList(customerListDTO);
return result;
}
@PostMapping("/deleteCustomerListIds") @PostMapping("/deleteCustomerListIds")
@ResponseBody @ResponseBody
public ResultDTO deleteCustomerListIds(@RequestBody @Valid CustomerRequestDTO customerRequestDTO) { public ResultDTO deleteCustomerListIds(@RequestBody @Valid CustomerRequestDTO customerRequestDTO) {
...@@ -129,14 +121,6 @@ public class CustomerController { ...@@ -129,14 +121,6 @@ public class CustomerController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@GetMapping("/latestCreated")
@ResponseBody
public ResponseEntity getLatestCreated(@RequestParam("companySiteId") Long companySiteId) {
ResultDTO result = new ResultDTO();
result.setData(customerService.getLatestCreated(companySiteId));
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/findCustomerContact") @PostMapping("/findCustomerContact")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> findAllCustomerContact(@RequestBody CustomerContactDTO customerContactDTO) { public ResponseEntity<ResultDTO> findAllCustomerContact(@RequestBody CustomerContactDTO customerContactDTO) {
......
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