Commit 0c65e1b0 authored by Vu Duy Anh's avatar Vu Duy Anh

anhvd merge code lan cuoi nhe

parent 1a7e533e
...@@ -3,3 +3,4 @@ target/ ...@@ -3,3 +3,4 @@ target/
logs/ logs/
out/ out/
/campaign.iml /campaign.iml
/lib
...@@ -6,16 +6,27 @@ import com.viettel.campaign.repository.ccms_full.TimeRangeDialModeRepository; ...@@ -6,16 +6,27 @@ import com.viettel.campaign.repository.ccms_full.TimeRangeDialModeRepository;
import com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository; import com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository;
import com.viettel.campaign.utils.Constants; 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.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.CampaignDTO; import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO; import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.hibernate.type.DateType;
import org.hibernate.type.LongType;
import org.hibernate.type.ShortType;
import org.hibernate.type.StringType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
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.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable; 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;
...@@ -53,18 +64,17 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -53,18 +64,17 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
public List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType) { public List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType) {
List<ApParamDTO> list = new ArrayList<>(); List<ApParamDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-status"); // String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-status");
StringBuilder stringBuilder = new StringBuilder(); StringBuilder sb = new StringBuilder();
stringBuilder.append(sql);
sb.append("select distinct COMPLETE_VALUE apParamId,");
sb.append(" COMPLETE_NAME parName");
sb.append(" from CAMPAIGN_COMPLETE_CODE");
sb.append(" where to_char(COMPLETE_TYPE) = :p_complete_type and STATUS = 1 and COMPANY_SITE_ID = :p_company_site_id");
try { try {
params.put("p_company_site_id", companySiteId); params.put("p_company_site_id", companySiteId);
if (CONNECT_STATUS_TYPE_RE.equals(completeType)) {
params.put("p_complete_type", "1");
stringBuilder.append(" and COMPLETE_VALUE <> 1");
} else {
params.put("p_complete_type", completeType); params.put("p_complete_type", completeType);
} list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
list = namedParameterJdbcTemplate.query(stringBuilder.toString(), params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} }
...@@ -75,10 +85,19 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -75,10 +85,19 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
public List<ApParamDTO> getComboCampaignType(String companySiteId) { public List<ApParamDTO> getComboCampaignType(String companySiteId) {
List<ApParamDTO> list = new ArrayList<>(); List<ApParamDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-campaign-type"); //String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-campaign-type");
StringBuilder sb = new StringBuilder();
sb.append("select PAR_VALUE apParamId,");
sb.append(" PAR_NAME parName");
sb.append(" from AP_PARAM");
sb.append(" where PAR_TYPE = 'CAMPAIGN_TYPE'");
sb.append(" and COMPANY_SITE_ID = :p_company_site_id");
sb.append(" and IS_DELETE = 0");
try { try {
params.put("p_company_site_id", companySiteId); params.put("p_company_site_id", companySiteId);
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ApParamDTO.class)); list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} }
...@@ -89,9 +108,214 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -89,9 +108,214 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
public ResultDTO getInteractiveResult(CampaignRequestDTO dto) { public ResultDTO getInteractiveResult(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
List<ContactCustResultDTO> list = new ArrayList<>(); List<ContactCustResultDTO> list = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
// try {
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
// sb.append(sql);
StringBuilder sb = new StringBuilder();
sb.append(" select b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
sb.append(" a.status recordStatus,");
sb.append(" (a.end_time - a.start_call)*24*60 callTime");
sb.append(" from contact_cust_result a");
sb.append(" left join campaign b on a.campaign_id = b.campaign_id");
sb.append(" left join vsa_users c on a.agent_id = c.user_id");
sb.append(" left join customer d on a.customer_id = d.customer_id");
sb.append(" left join campaign_complete_code e on a.contact_status = e.complete_value");
sb.append(" left join campaign_complete_code f on a.call_status = e.complete_value");
sb.append(" left join campaign g on a.campaign_id = g.campaign_id");
sb.append(" where a.status <> 0");
sb.append(" and a.company_site_id = :p_company_site_id");
sb.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sb.append(" and a.duration_call >= :p_call_time_from");
sb.append(" and a.duration_call <= :p_call_time_to");
sb.append(" and b.campaign_type in (:p_list_compaign_type)");
sb.append(" and to_char(a.customer_id) like :p_customer_id");
sb.append(" and to_char(a.contact_status) in (:p_list_contact_status)");
sb.append(" and to_char(a.call_status) in (:p_list_survey_status)");
sb.append(" and to_char(a.status) in (:p_list_record_status)");
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
sb.append(" and a.phone_number like :p_phone_number");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
sb.append(" and b.campaign_code in (:p_list_campaign_id) ");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sb.append(" and upper(b.campaign_name) like :p_campaign_name");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sb.append(" and upper(c.user_name) like :p_user_name");
}
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", dto.getCompanySiteId());
query.setParameter("p_customer_id", "%" + dto.getCustomerId()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
query.setParameter("p_date_from", dto.getFromDate());
query.setParameter("p_date_to", dto.getToDate());
query.setParameterList("p_list_compaign_type", dto.getCampaignType().split(","));
query.setParameterList("p_list_contact_status", dto.getContactStatus().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().split(","));
query.setParameterList("p_list_record_status", dto.getRecordStatus().split(","));
query.setParameter("p_call_time_from", dto.getCallTimeFrom());
query.setParameter("p_call_time_to", dto.getCallTimeTo());
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(","));
}
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
query.setParameter("p_phone_number", "%" + dto.getPhoneNumber()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
query.setParameter("p_campaign_name", "%" + dto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
query.setParameter("p_user_name", "%" + dto.getAgentId().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new StringType());
query.addScalar("customerName", new StringType());
query.addScalar("createTime", new DateType());
query.addScalar("contactStatus", new StringType());
query.addScalar("surveyStatus", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("recordStatus", new ShortType());
query.addScalar("callTime", new LongType());
query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class));
int count = 0;
list = query.list();
if (list.size() > 0) {
count = list.size();
}
Pageable pageable = SQLBuilder.buildPageable(dto);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<ContactCustResultDTO> data = query.list();
for (ContactCustResultDTO contactCustResultDTO : data) {
if (!"AGENT".equals(dto.getRoleUser())) {
contactCustResultDTO.setEnableEdit(true);
} else {
if (contactCustResultDTO.getRecordStatus() == 2) {
contactCustResultDTO.setEnableEdit(true);
} else if (contactCustResultDTO.getRecordStatus() == 1 && isLower24Hour(contactCustResultDTO.getCreateTime())) {
contactCustResultDTO.setEnableEdit(true);
} else {
contactCustResultDTO.setEnableEdit(false);
}
}
}
Page<ContactCustResultDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
try { try {
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive"); // String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
StringBuilder sql = new StringBuilder();
sb.append("with campaign_type_list as (");
sb.append(" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_compaign_type, ',') +1");
sb.append(" ),");
sb.append(" contact_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_contact_status, ',') +1");
sb.append(" ),");
sb.append(" survey_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_survey_status, ',') +1");
sb.append(" ),");
sb.append(" record_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_record_status, ',') +1");
sb.append(" ),");
sb.append(" campaign_id_list as (");
sb.append(" select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1");
sb.append(" ),");
sb.append(" data_temp as (");
sb.append(" select b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
sb.append(" a.status recordStatus,");
sb.append(" (a.end_time - a.start_call)*24*60 callTime");
sb.append(" from contact_cust_result a");
sb.append(" left join campaign b on a.campaign_id = b.campaign_id");
sb.append(" left join vsa_users c on a.agent_id = c.user_id");
sb.append(" left join customer d on a.customer_id = d.customer_id");
sb.append(" left join campaign_complete_code e on a.contact_status = e.complete_value");
sb.append(" left join campaign_complete_code f on a.call_status = e.complete_value");
sb.append(" left join campaign g on a.campaign_id = g.campaign_id");
sb.append(" where a.status <> 0");
sb.append(" and a.company_site_id = :p_company_site_id");
sb.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sb.append(" and a.duration_call >= :p_call_time_from");
sb.append(" and a.duration_call <= :p_call_time_to");
sb.append(" and to_char(a.customer_id) like '%'||:p_customer_id||'%'");
sb.append(" and b.campaign_type in (select campaign_type from campaign_type_list)");
sb.append(" and to_char(a.contact_status) in (select contact_status from contact_status_list)");
sb.append(" and to_char(a.call_status) in (select survey_status from survey_status_list)");
sb.append(" and to_char(a.status) in (select record_status from record_status_list)");
sb.append(" and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')");
sb.append(" and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))");
sb.append(" and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')");
sb.append(" and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')");
sb.append(" ),");
sb.append(" data as (");
sb.append(" select a.*, rownum row_ from data_temp a");
sb.append(" )");
sb.append(" select * from data");
sb.append(" where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))");
params.put("p_company_site_id", dto.getCompanySiteId()); params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_customer_id", dto.getCustomerId()); params.put("p_customer_id", dto.getCustomerId());
params.put("p_date_from", dto.getFromDate()); params.put("p_date_from", dto.getFromDate());
...@@ -108,7 +332,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -108,7 +332,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params.put("p_page_number", dto.getPage().toString()); params.put("p_page_number", dto.getPage().toString());
params.put("p_page_size", dto.getPageSize().toString()); params.put("p_page_size", dto.getPageSize().toString());
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class)); list = namedParameterJdbcTemplate.query(sql.toString(), params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class));
resultDTO.setListData(list); resultDTO.setListData(list);
resultDTO.setTotalRow(list.size()); resultDTO.setTotalRow(list.size());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
...@@ -118,16 +342,200 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -118,16 +342,200 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally { } finally {
return resultDTO;
} }
// }
return resultDTO;
} }
@Override @Override
public List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto) { public List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto) {
List<ContactCustResultDTO> list = new ArrayList<>(); List<ContactCustResultDTO> list = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
// try {
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
//sb.append(sql);
StringBuilder sb = new StringBuilder();
sb.append("select b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
sb.append(" a.status recordStatus,");
sb.append(" (a.end_time - a.start_call)*24*60 callTime");
sb.append(" from contact_cust_result a");
sb.append(" left join campaign b on a.campaign_id = b.campaign_id");
sb.append(" left join vsa_users c on a.agent_id = c.user_id");
sb.append(" left join customer d on a.customer_id = d.customer_id");
sb.append(" left join campaign_complete_code e on a.contact_status = e.complete_value");
sb.append(" left join campaign_complete_code f on a.call_status = e.complete_value");
sb.append(" left join campaign g on a.campaign_id = g.campaign_id");
sb.append(" where a.status <> 0");
sb.append(" and a.company_site_id = :p_company_site_id");
sb.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sb.append(" and a.duration_call >= :p_call_time_from");
sb.append(" and a.duration_call <= :p_call_time_to");
sb.append(" and b.campaign_type in (:p_list_compaign_type)");
sb.append(" and to_char(a.customer_id) like :p_customer_id");
sb.append(" and to_char(a.contact_status) in (:p_list_contact_status)");
sb.append(" and to_char(a.call_status) in (:p_list_survey_status)");
sb.append(" and to_char(a.status) in (:p_list_record_status)");
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
sb.append(" and a.phone_number like :p_phone_number");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
sb.append(" and b.campaign_code in (:p_list_campaign_id) ");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sb.append(" and upper(b.campaign_name) like :p_campaign_name");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sb.append(" and upper(c.user_name) like :p_user_name");
}
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", dto.getCompanySiteId());
query.setParameter("p_customer_id", "%" + dto.getCustomerId()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
query.setParameter("p_date_from", dto.getFromDate());
query.setParameter("p_date_to", dto.getToDate());
query.setParameterList("p_list_compaign_type", dto.getCampaignType().split(","));
query.setParameterList("p_list_contact_status", dto.getContactStatus().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().split(","));
query.setParameterList("p_list_record_status", dto.getRecordStatus().split(","));
query.setParameter("p_call_time_from", dto.getCallTimeFrom());
query.setParameter("p_call_time_to", dto.getCallTimeTo());
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(","));
}
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
query.setParameter("p_phone_number", "%" + dto.getPhoneNumber()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
query.setParameter("p_campaign_name", "%" + dto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
query.setParameter("p_user_name", "%" + dto.getAgentId().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new StringType());
query.addScalar("customerName", new StringType());
query.addScalar("createTime", new DateType());
query.addScalar("contactStatus", new StringType());
query.addScalar("surveyStatus", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("recordStatus", new ShortType());
query.addScalar("callTime", new LongType());
query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class));
list = query.list();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
try { try {
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive"); //String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder sb2 = new StringBuilder();
sb.append("with campaign_type_list as (");
sb.append(" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_compaign_type, ',') +1");
sb.append(" ),");
sb.append(" contact_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_contact_status, ',') +1");
sb.append(" ),");
sb.append(" survey_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_survey_status, ',') +1");
sb.append(" ),");
sb.append(" record_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_record_status, ',') +1");
sb.append(" ),");
sb.append(" campaign_id_list as (");
sb.append(" select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1");
sb.append(" ),");
sb.append(" data_temp as (");
sb.append(" select b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
sb.append(" a.status recordStatus,");
sb.append(" (a.end_time - a.start_call)*24*60 callTime");
sb.append(" from contact_cust_result a");
sb.append(" left join campaign b on a.campaign_id = b.campaign_id");
sb.append(" left join vsa_users c on a.agent_id = c.user_id");
sb.append(" left join customer d on a.customer_id = d.customer_id");
sb.append(" left join campaign_complete_code e on a.contact_status = e.complete_value");
sb.append(" left join campaign_complete_code f on a.call_status = e.complete_value");
sb.append(" left join campaign g on a.campaign_id = g.campaign_id");
sb.append(" where a.status <> 0");
sb.append(" and a.company_site_id = :p_company_site_id");
sb.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sb.append(" and a.duration_call >= :p_call_time_from");
sb.append(" and a.duration_call <= :p_call_time_to");
sb.append(" and to_char(a.customer_id) like '%'||:p_customer_id||'%'");
sb.append(" and b.campaign_type in (select campaign_type from campaign_type_list)");
sb.append(" and to_char(a.contact_status) in (select contact_status from contact_status_list)");
sb.append(" and to_char(a.call_status) in (select survey_status from survey_status_list)");
sb.append(" and to_char(a.status) in (select record_status from record_status_list)");
sb.append(" and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')");
sb.append(" and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))");
sb.append(" and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')");
sb.append(" and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')");
sb.append(" ),");
sb.append(" data as (");
sb.append(" select a.*, rownum row_ from data_temp a");
sb.append(" )");
sb.append(" select * from data");
sb.append(" where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))");
params.put("p_company_site_id", dto.getCompanySiteId()); params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_customer_id", dto.getCustomerId()); params.put("p_customer_id", dto.getCustomerId());
params.put("p_date_from", dto.getFromDate()); params.put("p_date_from", dto.getFromDate());
...@@ -144,7 +552,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -144,7 +552,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params.put("p_page_number", dto.getPage().toString()); params.put("p_page_number", dto.getPage().toString());
params.put("p_page_size", "0"); params.put("p_page_size", "0");
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class)); list = namedParameterJdbcTemplate.query(sb2.toString(), params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} finally { } finally {
......
...@@ -61,51 +61,102 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -61,51 +61,102 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return result; return result;
} }
try { try {
StringBuilder sqlStr = new StringBuilder(); StringBuilder sb = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-by-params"));
sb.append(" SELECT");
sb.append(" a.CAMPAIGN_ID campaignId,");
sb.append(" a.CAMPAIGN_CODE campaignCode,");
sb.append(" a.CAMPAIGN_NAME campaignName,");
sb.append(" a.CAMPAIGN_TYPE campaignType,");
sb.append(" (SELECT PAR_NAME FROM AP_PARAM WHERE STATUS = 1 AND PAR_TYPE = 'CAMPAIGN_TYPE' AND PAR_VALUE = a.CAMPAIGN_TYPE) campaignTypeName,");
sb.append(" a.CHANEL chanel,");
sb.append(" a.START_TIME startTime,");
sb.append(" a.END_TIME endTime,");
sb.append(" a.CUSTOMER_NUMBER customerNumber,");
sb.append(" a.STATUS status,");
sb.append(" a.CUSTOMER_NUMBER cusNum,");
sb.append(" b.SLKHThamgiaCD numOfJoinedCus,");
sb.append(" e.SLKHDaTuongTac numOfInteractedCus,");
sb.append(" c.SLKHChuaTuongTac numOfNotInteractedCus,");
sb.append(" d.SLKHDoNotCall_Khoa numOfLockCus,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.CONTENT content,");
sb.append(" a.MAX_RECALL maxRecall,");
sb.append(" a.RECALL_TYPE recallType,");
sb.append(" a.RECALL_DURATION recallDuration,");
sb.append(" a.CURRENT_TIME_MODE currentTimeMode,");
sb.append(" a.WRAPUP_TIME_CONNECT wrapupTimeConnect,");
sb.append(" a.WRAPUP_TIME_DISCONNECT wrapupTimeDisconnect");
sb.append(" FROM CAMPAIGN a");
sb.append(" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHThamgiaCD");
sb.append(" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID");
sb.append(" WHERE 1 = 1 AND cc.IN_CAMPAIGN_STATUS = 1 AND cus.STATUS = 1");
sb.append(" group by campaign_id) b");
sb.append(" ON a.CAMPAIGN_ID = b.CAMPAIGN_ID");
sb.append(" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHChuaTuongTac");
sb.append(" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID");
sb.append(" WHERE 1 = 1 AND cc.STATUS = 0 AND cus.STATUS = 1");
sb.append(" group by campaign_id) c");
sb.append(" ON c.CAMPAIGN_ID = a.CAMPAIGN_ID");
sb.append(" LEFT JOIN (SELECT cc.campaign_id, count(*) AS SLKHDoNotCall_Khoa");
sb.append(" FROM CAMPAIGN_CUSTOMER cc , CUSTOMER c");
sb.append(" WHERE cc.CUSTOMER_ID = c.CUSTOMER_ID");
sb.append(" AND (c.IPCC_STATUS = 'locked' or c.CALL_ALLOWED = 0) AND cc.STATUS = 1");
sb.append(" GROUP BY cc.CAMPAIGN_ID) d");
sb.append(" ON d.CAMPAIGN_ID = a.CAMPAIGN_ID");
sb.append(" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHDaTuongTac");
sb.append(" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID");
sb.append(" WHERE 1 = 1 AND cc.STATUS <> 0 AND cus.STATUS = 1");
sb.append(" group by campaign_id) e");
sb.append(" ON e.CAMPAIGN_ID = a.CAMPAIGN_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND a.STATUS <> -1");
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
sqlStr.append(" AND a.CAMPAIGN_CODE IN (:p_code) "); sb.append(" AND a.CAMPAIGN_CODE IN (:p_code) ");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) {
sqlStr.append(" AND UPPER(a.CAMPAIGN_NAME) LIKE :p_name"); sb.append(" AND UPPER(a.CAMPAIGN_NAME) LIKE :p_name");
} }
if (requestDto.getStatus() != null && requestDto.getStatus() >= 0) { if (requestDto.getStatus() != null && requestDto.getStatus() >= 0) {
sqlStr.append(" AND a.STATUS = :p_status"); sb.append(" AND a.STATUS = :p_status");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getFromDateFr())) { if (!DataUtil.isNullOrEmpty(requestDto.getFromDateFr())) {
sqlStr.append(" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') >= :p_frDateFr"); sb.append(" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') >= :p_frDateFr");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getToDateFr())) { if (!DataUtil.isNullOrEmpty(requestDto.getToDateFr())) {
sqlStr.append(" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') <= :p_toDateFr"); sb.append(" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') <= :p_toDateFr");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getFromDateTo())) { if (!DataUtil.isNullOrEmpty(requestDto.getFromDateTo())) {
sqlStr.append(" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') >= :p_frDateTo"); sb.append(" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') >= :p_frDateTo");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getToDateTo())) { if (!DataUtil.isNullOrEmpty(requestDto.getToDateTo())) {
sqlStr.append(" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') <= :p_toDateTo"); sb.append(" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') <= :p_toDateTo");
} }
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) { if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
sqlStr.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr"); sb.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr");
} }
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) { if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) {
sqlStr.append(" AND a.CUSTOMER_NUMBER <= :p_cusNumTo"); sb.append(" AND a.CUSTOMER_NUMBER <= :p_cusNumTo");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getTypes())) { if (!DataUtil.isNullOrEmpty(requestDto.getTypes())) {
sqlStr.append(" AND a.CAMPAIGN_TYPE IN (:p_type)"); sb.append(" AND a.CAMPAIGN_TYPE IN (:p_type)");
} }
if (requestDto.getChanel() != null && !DataUtil.isNullOrZero(requestDto.getChanel())) { if (requestDto.getChanel() != null && !DataUtil.isNullOrZero(requestDto.getChanel())) {
sqlStr.append(" AND a.CHANEL = :p_chanel"); sb.append(" AND a.CHANEL = :p_chanel");
} }
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) { if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
sqlStr.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr"); sb.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr");
} }
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) { if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) {
sqlStr.append(" AND a.CUSTOMER_NUMBER <= :p_cusNumTo"); sb.append(" AND a.CUSTOMER_NUMBER <= :p_cusNumTo");
} }
sqlStr.append(" ORDER BY a.START_TIME DESC "); sb.append(" ORDER BY a.START_TIME DESC ");
SQLQuery query = session.createSQLQuery(sqlStr.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
String[] lstCode = requestDto.getCampaignCode().split(","); String[] lstCode = requestDto.getCampaignCode().split(",");
query.setParameterList("p_code", lstCode); query.setParameterList("p_code", lstCode);
...@@ -180,7 +231,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -180,7 +231,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
if (list.size() > 0) { if (list.size() > 0) {
count = query.list().size(); count = query.list().size();
} }
if(requestDto.getPage() != null && requestDto.getPageSize() != null) { if (requestDto.getPage() != null && requestDto.getPageSize() != null) {
Pageable pageable = SQLBuilder.buildPageable(requestDto); Pageable pageable = SQLBuilder.buildPageable(requestDto);
if (pageable != null) { if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize()); query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
...@@ -189,7 +240,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -189,7 +240,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
List<CampaignDTO> data = query.list(); List<CampaignDTO> data = query.list();
Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count); Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count);
result.setData(dataPage); result.setData(dataPage);
}else { } else {
List<CampaignDTO> dataExport = query.list(); List<CampaignDTO> dataExport = query.list();
result.setData(dataExport); result.setData(dataExport);
} }
...@@ -220,8 +271,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -220,8 +271,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return result; return result;
} }
try { try {
StringBuilder sqlStr = new StringBuilder(); StringBuilder sb = new StringBuilder();
sqlStr.append(" SELECT CAMPAIGN_ID campaignId, " + sb.append(" SELECT CAMPAIGN_ID campaignId, " +
" CAMPAIGN_CODE campaignCode, " + " CAMPAIGN_CODE campaignCode, " +
" CAMPAIGN_NAME campaignName, " + " CAMPAIGN_NAME campaignName, " +
" START_TIME startTime," + " START_TIME startTime," +
...@@ -230,10 +281,10 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -230,10 +281,10 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
" FROM CAMPAIGN" + " FROM CAMPAIGN" +
" WHERE COMPANY_SITE_ID = :p_company_site_id AND STATUS <> -1 "); " WHERE COMPANY_SITE_ID = :p_company_site_id AND STATUS <> -1 ");
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
sqlStr.append(" AND CAMPAIGN_CODE LIKE :p_code "); sb.append(" AND CAMPAIGN_CODE LIKE :p_code ");
} }
sqlStr.append(" ORDER BY START_TIME DESC "); sb.append(" ORDER BY START_TIME DESC ");
SQLQuery query = session.createSQLQuery(sqlStr.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", requestDto.getCompanySiteId()); query.setParameter("p_company_site_id", requestDto.getCompanySiteId());
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
query.setParameter("p_code", "%" + query.setParameter("p_code", "%" +
...@@ -285,11 +336,19 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -285,11 +336,19 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
session.beginTransaction(); session.beginTransaction();
try { try {
StringBuilder sqlStr = new StringBuilder(); //StringBuilder sb = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-max-campaign-code-index")); //sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-max-campaign-code-index"));
SQLQuery query = session.createSQLQuery(sqlStr.toString()); StringBuilder sb = new StringBuilder();
sb.append("SELECT CASE WHEN");
sb.append(" (SELECT COUNT(1) FROM CAMPAIGN) > 0");
sb.append(" THEN (SELECT SUBSTR((SELECT CAMPAIGN_CODE FROM CAMPAIGN WHERE CAMPAIGN_ID = (SELECT MAX(CAMPAIGN_ID) FROM CAMPAIGN)),");
sb.append(" INSTR((SELECT CAMPAIGN_CODE FROM CAMPAIGN WHERE CAMPAIGN_ID = (SELECT MAX(CAMPAIGN_ID) FROM CAMPAIGN)), '_', -1, 1 )+1) FROM DUAL)");
sb.append(" ELSE '0'");
sb.append(" END FROM DUAL");
SQLQuery query = session.createSQLQuery(sb.toString());
List<String> list = query.list(); List<String> list = query.list();
if(list.size() > 0) { if (list.size() > 0) {
return list.get(0); return list.get(0);
} }
} catch (Exception ex) { } catch (Exception ex) {
...@@ -302,7 +361,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -302,7 +361,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
public ResultDTO checkAllowStatusToPrepare(Long campaignId) { public ResultDTO checkAllowStatusToPrepare(Long campaignId) {
logger.info("Start check allow campaign status to prepare::"); logger.info("Start check allow campaign status to prepare::");
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
if(DataUtil.isNullOrZero(campaignId)) { if (DataUtil.isNullOrZero(campaignId)) {
result.setErrorCode(Constants.ApiErrorCode.ERROR); result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR); result.setDescription(Constants.ApiErrorDesc.ERROR);
return result; return result;
...@@ -310,71 +369,52 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -310,71 +369,52 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
try { try {
StringBuilder sqlStr = new StringBuilder(); // StringBuilder sb = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "check-allow-campaign-status-to-prepare")); // sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "check-allow-campaign-status-to-prepare"));
SQLQuery query = session.createSQLQuery(sqlStr.toString()); StringBuilder sb = new StringBuilder();
sb.append(" WITH COUNT_LIST AS (SELECT (SELECT COUNT(1) FROM CAMPAIGN_CUSTOMER WHERE CAMPAIGN_ID = :p_campaignId) countCamp,");
sb.append(" (SELECT COUNT(1) FROM CAMPAIGN_AGENT WHERE CAMPAIGN_ID = :p_campaignId) countAgent,");
sb.append(" (select COUNT(1)");
sb.append(" FROM SCENARIO s");
sb.append(" INNER JOIN SCENARIO_QUESTION sq ON s.SCENARIO_ID = sq.SCENARIO_ID");
sb.append(" INNER JOIN SCENARIO_ANSWER sa ON sq.SCENARIO_QUESTION_ID = sa.SCENARIO_QUESTION_ID");
sb.append(" WHERE s.CAMPAIGN_ID = :p_campaignId) countScenario");
sb.append(" FROM DUAL)");
sb.append(" SELECT c.countCamp countCamp,");
sb.append(" c.countAgent countAgent,");
sb.append(" c.countScenario countScenario,");
sb.append(" CASE");
sb.append(" WHEN (c.countCamp IS NOT NULL AND c.countAgent IS NOT NULL AND c.countScenario IS NOT NULL) THEN '00'");
sb.append(" ELSE '01' END as code");
sb.append(" FROM COUNT_LIST c");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_campaignId", campaignId); query.setParameter("p_campaignId", campaignId);
List<Object[]> list = query.list(); List<Object[]> list = query.list();
if(list.size() > 0) { if (list.size() > 0) {
result.setData(list.get(0)); result.setData(list.get(0));
result.setErrorCode(Constants.ApiErrorCode.SUCCESS); result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS); result.setDescription(Constants.ApiErrorDesc.SUCCESS);
} }
}catch (Exception ex) { } catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
result.setErrorCode(Constants.ApiErrorCode.ERROR); result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR); result.setDescription(Constants.ApiErrorDesc.ERROR);
}finally { } finally {
session.close(); session.close();
} }
return result; return result;
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findCustomerListReallocation(CampaignRequestDTO dto) { public ResultDTO findCustomerListReallocation(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO(); return null;
List<CustomerCustomDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>();
try {
String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-list-customer-reallocation");
params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_campaign_id", dto.getCampaignId());
params.put("p_list_connect_status", dto.getConnectStatus());
params.put("p_page_size", dto.getPageSize().toString());
params.put("p_page_number", dto.getPage().toString());
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(CustomerCustomDTO.class));
resultDTO.setListData(list);
resultDTO.setTotalRow(list.size());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
logger.error(e.getMessage(), e);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
} }
@Override @Override
public ResultDTO reallocationCustomer(CampaignRequestDTO dto) { public ResultDTO reallocationCustomer(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO(); return null;
try {
List<CustomerCustomDTO> list = dto.getCustomerCustomDTOList();
for (CustomerCustomDTO customerCustomDTO: list) {
CampaignCustomer campaignCustomer = entityManager.find(CampaignCustomer.class, customerCustomDTO.getCampaignCustomerId());
campaignCustomer.setStatus((short) 0);
campaignCustomer.setCallStatus(null);
campaignCustomer.setRedistribute((short) 1);
}
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
logger.error(e.getMessage(), e);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
} }
} }
...@@ -32,9 +32,30 @@ public class UserActionLogRepositoryImpl implements UserActionLogRepositoryCusto ...@@ -32,9 +32,30 @@ public class UserActionLogRepositoryImpl implements UserActionLogRepositoryCusto
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
session.beginTransaction(); session.beginTransaction();
try{ try{
StringBuilder sqlStr = new StringBuilder(); // StringBuilder sqlStr = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "insert-to-user-action-log")); // sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "insert-to-user-action-log"));
SQLQuery query = session.createSQLQuery(sqlStr.toString()); StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO \"CCMS_FULL\".\"USER_ACTION_LOG\" (");
sb.append(" AGENT_ID,");
sb.append(" COMPANY_SITE_ID,");
sb.append(" SESSION_ID,");
sb.append(" START_TIME,");
sb.append(" END_TIME,");
sb.append(" ACTION_TYPE,");
sb.append(" DESCRIPTION,");
sb.append(" OBJECT_ID)");
sb.append(" VALUES (");
sb.append(" :par_agentId,");
sb.append(" :par_companySiteId,");
sb.append(" :par_sessionId,");
sb.append(" :par_startTime,");
sb.append(" null,");
sb.append(" :par_actionType,");
sb.append(" null,");
sb.append(" :par_objectId)");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("par_agentId", userActionLogDTO.getAgentId() == null ? "" : userActionLogDTO.getAgentId()); query.setParameter("par_agentId", userActionLogDTO.getAgentId() == null ? "" : userActionLogDTO.getAgentId());
query.setParameter("par_companySiteId", userActionLogDTO.getCompanySiteId()); query.setParameter("par_companySiteId", userActionLogDTO.getCompanySiteId());
query.setParameter("par_sessionId", userActionLogDTO.getSessionId()); query.setParameter("par_sessionId", userActionLogDTO.getSessionId());
......
...@@ -76,16 +76,47 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -76,16 +76,47 @@ public class AgentsServiceImpl implements AgentsService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params")); // sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
sqlStrBuilder.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID"); StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(" WHERE 1 = 1");
sqlStrBuilder.append(" AND a.COMPANY_SITE_ID = :p_company_site_id"); sb.append("SELECT");
sqlStrBuilder.append(" AND b.CAMPAIGN_AGENT_ID IS NULL"); sb.append(" a.USER_ID userId,");
sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC"); sb.append(" a.USER_NAME userName,");
sb.append(" a.STATUS status,");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); sb.append(" a.FULL_NAME fullName,");
sb.append(" a.USER_TYPE_ID userTypeId,");
sb.append(" a.CREATE_DATE createDate,");
sb.append(" a.DESCRIPTION description,");
sb.append(" a.STAFF_CODE staffCode,");
sb.append(" a.MANAGER_ID managerId,");
sb.append(" a.LOCATION_ID locationId,");
sb.append(" a.DEPT_ID deptId,");
sb.append(" a.DEPT_LEVEL deptLevel,");
sb.append(" a.POS_ID posId,");
sb.append(" a.DEPT_NAME deptName,");
sb.append(" a.GROUP_ID groupId,");
sb.append(" a.SITE_ID siteId,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.AGENT_TYPE agentType,");
sb.append(" a.MOBILE_NUMBER mobileNumber,");
sb.append(" a.FACEBOOK_ID facebookId,");
sb.append(" a.LOGIN_TYPE loginType,");
sb.append(" a.GOOGLE_ID googleId,");
sb.append(" a.EMAIL email,");
sb.append(" a.AVAILABLE_TICKET availableTicket,");
sb.append(" a.USER_KAZOO_ID userKazooId,");
sb.append(" b.FILTER_TYPE filterType");
sb.append(" FROM VSA_USERS a");
sb.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND b.AGENT_ID IS NULL");
sb.append(" ORDER BY a.FULL_NAME ASC");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
...@@ -93,29 +124,28 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -93,29 +124,28 @@ public class AgentsServiceImpl implements AgentsService {
query.addScalar("userName", new StringType()); query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType()); query.addScalar("fullName", new StringType());
// query.addScalar("userTypeId", new LongType()); query.addScalar("userTypeId", new LongType());
// query.addScalar("createDate", new DateType()); query.addScalar("createDate", new DateType());
// query.addScalar("description", new StringType()); query.addScalar("description", new StringType());
// query.addScalar("staffCode", new StringType()); query.addScalar("staffCode", new StringType());
// query.addScalar("managerId", new LongType()); query.addScalar("managerId", new LongType());
// query.addScalar("locationId", new LongType()); query.addScalar("locationId", new LongType());
// query.addScalar("deptId", new LongType()); query.addScalar("deptId", new LongType());
// query.addScalar("deptLevel", new StringType()); query.addScalar("deptLevel", new StringType());
// query.addScalar("posId", new LongType()); query.addScalar("posId", new LongType());
// query.addScalar("deptName", new StringType()); query.addScalar("deptName", new StringType());
// query.addScalar("groupId", new LongType()); query.addScalar("groupId", new LongType());
// query.addScalar("siteId", new LongType()); query.addScalar("siteId", new LongType());
query.addScalar("companySiteId", new LongType()); query.addScalar("companySiteId", new LongType());
// query.addScalar("agentType", new ShortType()); query.addScalar("agentType", new ShortType());
// query.addScalar("mobileNumber", new StringType()); query.addScalar("mobileNumber", new StringType());
// query.addScalar("facebookId", new StringType()); query.addScalar("facebookId", new StringType());
// query.addScalar("loginType", new ShortType()); query.addScalar("loginType", new ShortType());
// query.addScalar("googleId", new StringType()); query.addScalar("googleId", new StringType());
// query.addScalar("email", new StringType()); query.addScalar("email", new StringType());
// query.addScalar("availableTicket", new LongType()); query.addScalar("availableTicket", new LongType());
// query.addScalar("userKazooId", new StringType()); query.addScalar("userKazooId", new StringType());
query.addScalar("filterType", new ShortType()); query.addScalar("filterType", new ShortType());
query.addScalar("campaignAgentId", new LongType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class)); query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
int count = 0; int count = 0;
...@@ -160,16 +190,46 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -160,16 +190,46 @@ public class AgentsServiceImpl implements AgentsService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params")); // sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(" RIGHT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sqlStrBuilder.append(" WHERE 1 = 1"); sb.append("SELECT");
sqlStrBuilder.append(" AND b.COMPANY_SITE_ID = :p_company_site_id"); sb.append(" a.USER_ID userId,");
sqlStrBuilder.append(" AND b.CAMPAIGN_ID = :p_campaign_id"); sb.append(" a.USER_NAME userName,");
sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC"); sb.append(" a.STATUS status,");
sb.append(" a.FULL_NAME fullName,");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); sb.append(" a.USER_TYPE_ID userTypeId,");
sb.append(" a.CREATE_DATE createDate,");
sb.append(" a.DESCRIPTION description,");
sb.append(" a.STAFF_CODE staffCode,");
sb.append(" a.MANAGER_ID managerId,");
sb.append(" a.LOCATION_ID locationId,");
sb.append(" a.DEPT_ID deptId,");
sb.append(" a.DEPT_LEVEL deptLevel,");
sb.append(" a.POS_ID posId,");
sb.append(" a.DEPT_NAME deptName,");
sb.append(" a.GROUP_ID groupId,");
sb.append(" a.SITE_ID siteId,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.AGENT_TYPE agentType,");
sb.append(" a.MOBILE_NUMBER mobileNumber,");
sb.append(" a.FACEBOOK_ID facebookId,");
sb.append(" a.LOGIN_TYPE loginType,");
sb.append(" a.GOOGLE_ID googleId,");
sb.append(" a.EMAIL email,");
sb.append(" a.AVAILABLE_TICKET availableTicket,");
sb.append(" a.USER_KAZOO_ID userKazooId,");
sb.append(" b.FILTER_TYPE filterType");
sb.append(" FROM VSA_USERS a");
sb.append(" RIGHT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND b.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND b.CAMPAIGN_ID = :p_campaign_id");
sb.append(" ORDER BY a.FULL_NAME ASC");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_campaign_id", campaignId); query.setParameter("p_campaign_id", campaignId);
...@@ -178,29 +238,28 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -178,29 +238,28 @@ public class AgentsServiceImpl implements AgentsService {
query.addScalar("userName", new StringType()); query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType()); query.addScalar("fullName", new StringType());
// query.addScalar("userTypeId", new LongType()); query.addScalar("userTypeId", new LongType());
// query.addScalar("createDate", new DateType()); query.addScalar("createDate", new DateType());
// query.addScalar("description", new StringType()); query.addScalar("description", new StringType());
// query.addScalar("staffCode", new StringType()); query.addScalar("staffCode", new StringType());
// query.addScalar("managerId", new LongType()); query.addScalar("managerId", new LongType());
// query.addScalar("locationId", new LongType()); query.addScalar("locationId", new LongType());
// query.addScalar("deptId", new LongType()); query.addScalar("deptId", new LongType());
// query.addScalar("deptLevel", new StringType()); query.addScalar("deptLevel", new StringType());
// query.addScalar("posId", new LongType()); query.addScalar("posId", new LongType());
// query.addScalar("deptName", new StringType()); query.addScalar("deptName", new StringType());
// query.addScalar("groupId", new LongType()); query.addScalar("groupId", new LongType());
// query.addScalar("siteId", new LongType()); query.addScalar("siteId", new LongType());
query.addScalar("companySiteId", new LongType()); query.addScalar("companySiteId", new LongType());
// query.addScalar("agentType", new ShortType()); query.addScalar("agentType", new ShortType());
// query.addScalar("mobileNumber", new StringType()); query.addScalar("mobileNumber", new StringType());
// query.addScalar("facebookId", new StringType()); query.addScalar("facebookId", new StringType());
// query.addScalar("loginType", new ShortType()); query.addScalar("loginType", new ShortType());
// query.addScalar("googleId", new StringType()); query.addScalar("googleId", new StringType());
// query.addScalar("email", new StringType()); query.addScalar("email", new StringType());
// query.addScalar("availableTicket", new LongType()); query.addScalar("availableTicket", new LongType());
// query.addScalar("userKazooId", new StringType()); query.addScalar("userKazooId", new StringType());
query.addScalar("filterType", new ShortType()); query.addScalar("filterType", new ShortType());
query.addScalar("campaignAgentId", new LongType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class)); query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
int count = 0; int count = 0;
...@@ -292,9 +351,19 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -292,9 +351,19 @@ public class AgentsServiceImpl implements AgentsService {
} }
try { try {
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
StringBuilder sqlStrBuilder = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
sqlStrBuilder.append("SELECT");
sqlStrBuilder.append(" a.USER_ID userId,");
sqlStrBuilder.append(" a.USER_NAME userName,");
sqlStrBuilder.append(" a.STATUS status,");
sqlStrBuilder.append(" a.FULL_NAME fullName,");
sqlStrBuilder.append(" a.COMPANY_SITE_ID companySiteId,");
sqlStrBuilder.append(" b.FILTER_TYPE filterType,");
sqlStrBuilder.append(" b.CAMPAIGN_AGENT_ID campaignAgentId");
sqlStrBuilder.append(" FROM VSA_USERS a");
sqlStrBuilder.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID"); sqlStrBuilder.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sqlStrBuilder.append(" JOIN USER_ROLE c on a.USER_ID = c.USER_ID"); sqlStrBuilder.append(" JOIN USER_ROLE c on a.USER_ID = c.USER_ID");
sqlStrBuilder.append(" JOIN ROLE d on c.ROLE_ID = d.ROLE_ID"); sqlStrBuilder.append(" JOIN ROLE d on c.ROLE_ID = d.ROLE_ID");
......
...@@ -54,10 +54,36 @@ public class CampaignCfgServiceImpl implements CampaignCfgService { ...@@ -54,10 +54,36 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "findAll-CampaignCompleteCode")); // sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "findAll-CampaignCompleteCode"));
StringBuilder sb = new StringBuilder();
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
sb.append("SELECT");
sb.append(" CAMPAIGN_COMPLETE_CODE_ID campaignCompleteCodeId,");
sb.append(" IS_RECALL isRecall ,");
sb.append(" CAMPAIGN_ID campaignId,");
sb.append(" COMPLETE_VALUE completeValue,");
sb.append(" COMPLETE_NAME completeName,");
sb.append(" COMPLETE_TYPE completeType,");
sb.append(" CAMPAIGN_TYPE campaignType,");
sb.append(" DESCRIPTION description,");
sb.append(" STATUS status,");
sb.append(" COMPANY_SITE_ID companySiteId,");
sb.append(" UPDATE_BY updateBy ,");
sb.append(" UPDATE_AT updateAt,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_AT createAt,");
sb.append(" IS_FINISH isFinish,");
sb.append(" IS_LOCK isLock,");
sb.append(" DURATION_LOCK durationLock,");
sb.append(" CHANEL chanel");
sb.append(" FROM CAMPAIGN_COMPLETE_CODE");
sb.append(" where 1 = 1");
sb.append(" AND STATUS = 1");
sb.append(" and COMPANY_SITE_ID = :p_company_site_id");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
...@@ -258,10 +284,16 @@ public class CampaignCfgServiceImpl implements CampaignCfgService { ...@@ -258,10 +284,16 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "get-max-value-completevalue")); // sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "get-max-value-completevalue"));
StringBuilder sb = new StringBuilder();
sb.append("SELECT max(to_number(COMPLETE_VALUE)) completeValue, COMPANY_SITE_ID ");
sb.append(" companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id ");
sb.append(" GROUP BY COMPANY_SITE_ID");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_site_id", completeCodeDTO.getCompanySiteId()); query.setParameter("p_site_id", completeCodeDTO.getCompanySiteId());
query.addScalar("completeValue", new StringType()); query.addScalar("completeValue", new StringType());
...@@ -341,10 +373,35 @@ public class CampaignCfgServiceImpl implements CampaignCfgService { ...@@ -341,10 +373,35 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG,"findCampaignCodeById")); // sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG,"findCampaignCodeById"));
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
StringBuilder sb = new StringBuilder();
sb.append("SELECT CAMPAIGN_COMPLETE_CODE_ID campaignCompleteCodeId,");
sb.append(" IS_RECALL isRecall ,");
sb.append(" CAMPAIGN_ID campaignId,");
sb.append(" COMPLETE_VALUE completeValue,");
sb.append(" COMPLETE_NAME completeName,");
sb.append(" COMPLETE_TYPE completeType,");
sb.append(" CAMPAIGN_TYPE campaignType,");
sb.append(" DESCRIPTION description,");
sb.append(" STATUS status,");
sb.append(" COMPANY_SITE_ID companySiteId,");
sb.append(" UPDATE_BY updateBy ,");
sb.append(" UPDATE_AT updateAt,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_AT createAt,");
sb.append(" IS_FINISH isFinish,");
sb.append(" IS_LOCK isLock,");
sb.append(" DURATION_LOCK durationLock,");
sb.append(" CHANEL chanel");
sb.append(" from CAMPAIGN_COMPLETE_CODE WHERE ");
sb.append(" CAMPAIGN_COMPLETE_CODE_ID=:p_campaignComleteCode");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_campaignComleteCode",campaignCompleteCodeId); query.setParameter("p_campaignComleteCode",campaignCompleteCodeId);
......
...@@ -91,12 +91,44 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -91,12 +91,44 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params")); // sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
sqlStrBuilder.append(" ORDER BY b.NAME ASC"); //sqlStrBuilder.append(" ORDER BY b.NAME ASC");
StringBuilder sb = new StringBuilder();
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
sb.append("select");
sb.append(" a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.CUSTOMER_LIST_ID customerListId,");
sb.append(" a.CUSTOMER_ID customerId,");
sb.append(" b.NAME name,");
sb.append(" b.DESCRIPTION description,");
sb.append(" b.COMPANY_NAME companyName,");
sb.append(" b.CUSTOMER_TYPE customerType,");
sb.append(" b.CURRENT_ADDRESS currentAddress,");
sb.append(" b.CALL_ALLOWED callAllowed,");
sb.append(" b.EMAIL_ALLOWED emailAllowed,");
sb.append(" b.SMS_ALLOWED smsAllowed,");
sb.append(" b.IPCC_STATUS ipccStatus,");
sb.append(" c.MOBILE mobileNumber,");
sb.append(" d.EMAIL email");
sb.append(" from CUSTOMER_LIST_MAPPING a");
sb.append(" join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY ");
sb.append(" NULL) AS MOBILE");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY ");
sb.append(" CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY ");
sb.append(" NULL) AS EMAIL");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY ");
sb.append(" CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID ");
sb.append(" where 1 = 1");
sb.append(" and a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" and a.CUSTOMER_LIST_ID = :p_customer_list_id");
sb.append(" ORDER BY b.NAME ASC");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_list_id", customerListId); query.setParameter("p_customer_list_id", customerListId);
...@@ -180,21 +212,49 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -180,21 +212,49 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params")); // sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
StringBuilder sb = new StringBuilder();
sb.append("select");
sb.append(" a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.CUSTOMER_LIST_ID customerListId,");
sb.append(" a.CUSTOMER_ID customerId,");
sb.append(" b.NAME name,");
sb.append(" b.DESCRIPTION description,");
sb.append(" b.COMPANY_NAME companyName,");
sb.append(" b.CUSTOMER_TYPE customerType,");
sb.append(" b.CURRENT_ADDRESS currentAddress,");
sb.append(" b.CALL_ALLOWED callAllowed,");
sb.append(" b.EMAIL_ALLOWED emailAllowed,");
sb.append(" b.SMS_ALLOWED smsAllowed,");
sb.append(" b.IPCC_STATUS ipccStatus,");
sb.append(" c.MOBILE mobileNumber,");
sb.append(" d.EMAIL email");
sb.append(" from CUSTOMER_LIST_MAPPING a");
sb.append(" join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID");
sb.append(" where 1 = 1");
sb.append(" and a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" and a.CUSTOMER_LIST_ID = :p_customer_list_id");
if (!DataUtil.isNullOrEmpty(name)) { if (!DataUtil.isNullOrEmpty(name)) {
sqlStrBuilder.append(" AND UPPER(b.NAME) LIKE UPPER(:p_name)"); sb.append(" AND UPPER(b.NAME) LIKE UPPER(:p_name)");
} }
if (!DataUtil.isNullOrEmpty(mobileNumber)) { if (!DataUtil.isNullOrEmpty(mobileNumber)) {
sqlStrBuilder.append(" AND UPPER(c.MOBILE) LIKE UPPER(:p_mobile_number)"); sb.append(" AND UPPER(c.MOBILE) LIKE UPPER(:p_mobile_number)");
} }
if (!DataUtil.isNullOrEmpty(email)) { if (!DataUtil.isNullOrEmpty(email)) {
sqlStrBuilder.append(" AND UPPER(d.EMAIL) LIKE UPPER(:p_email)"); sb.append(" AND UPPER(d.EMAIL) LIKE UPPER(:p_email)");
} }
sqlStrBuilder.append(" ORDER BY name DESC"); sb.append(" ORDER BY name DESC");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_list_id", customerListId); query.setParameter("p_customer_list_id", customerListId);
...@@ -356,12 +416,35 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -356,12 +416,35 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customer-detail-by-id")); // sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customer-detail-by-id"));
StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(" AND e.FUNCTION_CODE = 'CUSTOMER'");
sb.append("select");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.CUSTOMER_LIST_ID customerListId,");
sb.append(" a.CUSTOMER_ID customerId,");
sb.append(" e.TITLE title,");
sb.append(" f.TYPE type,");
sb.append(" h.VALUE_COMBOBOX valueCombobox,");
sb.append(" e.VALUE_CHECKBOX valueCheckbox,");
sb.append(" e.VALUE_DATE valueDate,");
sb.append(" e.VALUE_NUMBER valueNumber,");
sb.append(" e.VALUE_TEXT valueText");
sb.append(" from CUSTOMER_LIST_MAPPING a");
sb.append(" left join CUSTOMIZE_FIELD_OBJECT e on a.CUSTOMER_ID = e.OBJECT_ID");
sb.append(" left join CUSTOMIZE_FIELDS f on e.CUSTOMIZE_FIELDS_ID = f.CUSTOMIZE_FIELD_ID");
sb.append(" left join (SELECT FIELD_OPTION_VALUE_ID, NAME AS VALUE_COMBOBOX");
sb.append(" FROM CUSTOMIZE_FIELD_OPTION_VALUE) h on h.FIELD_OPTION_VALUE_ID = ");
sb.append(" e.FIELD_OPTION_VALUE_ID");
sb.append(" where 1 = 1");
sb.append(" and a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" and a.CUSTOMER_LIST_ID = :p_customer_list_id");
sb.append(" and a.CUSTOMER_ID = :p_customer_id");
sb.append(" AND e.FUNCTION_CODE = 'CUSTOMER'");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_list_id", customerListId); query.setParameter("p_customer_list_id", customerListId);
...@@ -426,12 +509,31 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -426,12 +509,31 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params")); // sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
sqlStrBuilder.append(" ORDER BY CREATE_AT DESC"); StringBuilder sb = new StringBuilder();
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); sb.append("SELECT");
sb.append(" CUSTOMER_LIST_ID customerListId,");
sb.append(" COMPANY_SITE_ID companySiteId,");
sb.append(" CUSTOMER_LIST_CODE customerListCode,");
sb.append(" CUSTOMER_LIST_NAME customerListName,");
sb.append(" STATUS status,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_AT createAt,");
sb.append(" UPDATE_BY updateBy,");
sb.append(" UPDATE_AT updateAt,");
sb.append(" SOURCE source,");
sb.append(" DEPT_CREATE deptCreate");
sb.append(" FROM CUSTOMER_LIST");
sb.append(" WHERE 1 = 1");
sb.append(" AND STATUS = 1");
sb.append(" AND COMPANY_SITE_ID = :p_company_site_id");
sb.append(" ORDER BY CREATE_AT DESC");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
...@@ -608,19 +710,37 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -608,19 +710,37 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params")); // sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(" AND CREATE_AT BETWEEN to_date(:p_date_from, 'YYYYMMDD') AND to_date(:p_date_to, 'YYYYMMDD')");
sb.append("SELECT");
sb.append(" CUSTOMER_LIST_ID customerListId,");
sb.append(" COMPANY_SITE_ID companySiteId,");
sb.append(" CUSTOMER_LIST_CODE customerListCode,");
sb.append(" CUSTOMER_LIST_NAME customerListName,");
sb.append(" STATUS status,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_AT createAt,");
sb.append(" UPDATE_BY updateBy,");
sb.append(" UPDATE_AT updateAt,");
sb.append(" SOURCE source,");
sb.append(" DEPT_CREATE deptCreate");
sb.append(" FROM CUSTOMER_LIST");
sb.append(" WHERE 1 = 1");
sb.append(" AND STATUS = 1");
sb.append(" AND COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND CREATE_AT BETWEEN to_date(:p_date_from, 'YYYYMMDD') AND to_date(:p_date_to, 'YYYYMMDD')");
if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListCode())) { if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListCode())) {
sqlStrBuilder.append(" AND UPPER(CUSTOMER_LIST_CODE) LIKE UPPER(:p_list_code)"); sb.append(" AND CUSTOMER_LIST_CODE LIKE :p_list_code");
} }
if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListName())) { if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListName())) {
sqlStrBuilder.append(" AND UPPER(CUSTOMER_LIST_NAME) LIKE UPPER(:p_list_name)"); sb.append(" AND CUSTOMER_LIST_NAME LIKE :p_list_name");
} }
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", searchCustomerRequestDTO.getCompanySiteId()); query.setParameter("p_company_site_id", searchCustomerRequestDTO.getCompanySiteId());
query.setParameter("p_date_from", searchCustomerRequestDTO.getConvertedDateFrom()); query.setParameter("p_date_from", searchCustomerRequestDTO.getConvertedDateFrom());
...@@ -674,7 +794,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -674,7 +794,8 @@ public class CustomerServiceImpl implements CustomerService {
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) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally { } finally {
...@@ -741,10 +862,37 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -741,10 +862,37 @@ public class CustomerServiceImpl implements CustomerService {
public List<DynamicExcelHeaderDTO> getDynamicHeader(Long companySiteId) { public List<DynamicExcelHeaderDTO> getDynamicHeader(Long companySiteId) {
List<DynamicExcelHeaderDTO> headerList; List<DynamicExcelHeaderDTO> headerList;
try { try {
String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_CUSTOMER_MNG, "get-dynamic-header"); //String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_CUSTOMER_MNG, "get-dynamic-header");
StringBuilder sb = new StringBuilder();
sb.append(" select CUSTOMIZE_FIELD_ID customizeFieldId,");
sb.append(" SITE_ID companySiteId,");
sb.append(" FUNCTION_CODE functionCode,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_DATE createDate,");
sb.append(" UPDATE_BY updateBy,");
sb.append(" UPDATE_DATE updateDate,");
sb.append(" STATUS status,");
sb.append(" TYPE type,");
sb.append(" TITLE title,");
sb.append(" PLACEHOLDER placeholder,");
sb.append(" DESCRIPTION description,");
sb.append(" POSITION position,");
sb.append(" REQUIRED required,");
sb.append(" FIELD_OPTIONS_ID fieldOptionsId,");
sb.append(" REGEXP_FOR_VALIDATION regexpForValidation,");
sb.append(" MAX_LENGTH maxLength,");
sb.append(" MIN min,");
sb.append(" MAX max,");
sb.append(" MIN_LENGTH minLength,");
sb.append(" ACTIVE active");
sb.append(" from customize_fields");
sb.append(" where function_code = 'CUSTOMER'");
sb.append(" and site_id = :p_company_site_id");
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("p_company_site_id", companySiteId); param.put("p_company_site_id", companySiteId);
headerList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(DynamicExcelHeaderDTO.class)); headerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(DynamicExcelHeaderDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
...@@ -775,10 +923,32 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -775,10 +923,32 @@ public class CustomerServiceImpl implements CustomerService {
public List<CustomizeFieldDTO> getCustomizeField(Long customerId) { public List<CustomizeFieldDTO> getCustomizeField(Long customerId) {
List<CustomizeFieldDTO> customizeFieldDTOList; List<CustomizeFieldDTO> customizeFieldDTOList;
try { try {
String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customize-field"); //String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customize-field");
StringBuilder sb = new StringBuilder();
sb.append(" select CUSTOMIZE_FIELD_OBJECT_ID customizeFieldObjectId,");
sb.append(" OBJECT_ID objectId,");
sb.append(" CUSTOMIZE_FIELDS_ID customizeFieldId,");
sb.append(" VALUE_TEXT valueText,");
sb.append(" VALUE_NUMBER valueNumber,");
sb.append(" VALUE_DATE valueDate,");
sb.append(" VALUE_CHECKBOX valueCheckbox,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_DATE createDate,");
sb.append(" UPDATE_BY updateBy,");
sb.append(" UPDATE_DATE updateDate,");
sb.append(" STATUS status,");
sb.append(" FIELD_OPTION_VALUE_ID fieldOptionValueId,");
sb.append(" TITLE title,");
sb.append(" FUNCTION_CODE functionCode");
sb.append(" from customize_field_object");
sb.append(" where function_code = 'CUSTOMER' and object_id = :p_customer_id");
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("p_customer_id", customerId); param.put("p_customer_id", customerId);
customizeFieldDTOList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(CustomizeFieldDTO.class)); customizeFieldDTOList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomizeFieldDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
...@@ -790,13 +960,63 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -790,13 +960,63 @@ 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"); //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<>(); Map<String, Object> param = new HashMap<>();
param.put("p_campaign_id", campaignCustomerDTO.getCampaignId()); param.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
param.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId()); param.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
param.put("p_page_number", campaignCustomerDTO.getPage()); param.put("p_page_number", campaignCustomerDTO.getPage());
param.put("p_page_size", campaignCustomerDTO.getPageSize()); param.put("p_page_size", campaignCustomerDTO.getPageSize());
customerList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(CustomerListDTO.class)); customerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomerListDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
...@@ -807,11 +1027,52 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -807,11 +1027,52 @@ public class CustomerServiceImpl implements CustomerService {
public List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO) { public List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO) {
List<CustomerDTO> customerList; List<CustomerDTO> customerList;
try { try {
String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-individual-customer"); //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(" contact phone");
sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 5");
sb.append(" and status = 1");
sb.append(" ), cusEmail as (");
sb.append(" select customer_id cusId,");
sb.append(" contact email");
sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 2");
sb.append(" and status = 1");
sb.append(" ), datas as (");
sb.append(" select c.customer_id customerId,");
sb.append(" c.name,");
sb.append(" cP.phone,");
sb.append(" cE.email,");
sb.append(" c.customer_type cusType,");
sb.append(" c.company_name compName,");
sb.append(" c.current_address currentAddress,");
sb.append(" c.description");
sb.append(" from customer c");
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 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<>(); Map<String, Object> param = new HashMap<>();
param.put("p_page_number", campaignCustomerDTO.getPage()); param.put("p_page_number", campaignCustomerDTO.getPage());
param.put("p_page_size", campaignCustomerDTO.getPageSize()); param.put("p_page_size", campaignCustomerDTO.getPageSize());
customerList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(CustomerDTO.class)); customerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomerDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
......
...@@ -18,23 +18,23 @@ public class SQLBuilder { ...@@ -18,23 +18,23 @@ public class SQLBuilder {
public static final String SQL_MODULE_CAMPAIGN_STATUS_MNG = "campaign-status-mng"; public static final String SQL_MODULE_CAMPAIGN_STATUS_MNG = "campaign-status-mng";
public static final String SQL_MODULE_CAMPAIGN_CUSTOMER_MNG = "campaign-customer-mng"; public static final String SQL_MODULE_CAMPAIGN_CUSTOMER_MNG = "campaign-customer-mng";
public static String getSqlQueryById(String module, // public static String getSqlQueryById(String module,
String queryId) { // String queryId) {
File folder = null; // File folder = null;
try { // try {
folder = new ClassPathResource( // folder = new ClassPathResource(
"sql" + File.separator + module + File.separator + queryId + ".sql").getFile(); // "sql" + File.separator + module + File.separator + queryId + ".sql").getFile();
//
// Read file // // Read file
if (folder.isFile()) { // if (folder.isFile()) {
String sql = new String(Files.readAllBytes(Paths.get(folder.getAbsolutePath()))); // String sql = new String(Files.readAllBytes(Paths.get(folder.getAbsolutePath())));
return sql; // return sql;
} // }
} catch (IOException e) { // } catch (IOException e) {
return null; // return null;
} // }
return null; // return null;
} // }
public static Pageable buildPageable(BaseDTO obj) { public static Pageable buildPageable(BaseDTO obj) {
Pageable pageable = null; Pageable pageable = null;
......
...@@ -3,30 +3,7 @@ SELECT ...@@ -3,30 +3,7 @@ SELECT
a.USER_NAME userName, a.USER_NAME userName,
a.STATUS status, a.STATUS status,
a.FULL_NAME fullName, a.FULL_NAME fullName,
-- a.USER_TYPE_ID userTypeId,
-- a.CREATE_DATE createDate,
-- a.DESCRIPTION description,
-- a.STAFF_CODE staffCode,
-- a.MANAGER_ID managerId,
-- a.LOCATION_ID locationId,
-- a.DEPT_ID deptId,
-- a.DEPT_LEVEL deptLevel,
-- a.POS_ID posId,
-- a.DEPT_NAME deptName,
-- a.GROUP_ID groupId,
-- a.SITE_ID siteId,
a.COMPANY_SITE_ID companySiteId, a.COMPANY_SITE_ID companySiteId,
-- a.AGENT_TYPE agentType,
-- a.MOBILE_NUMBER mobileNumber,
-- a.FACEBOOK_ID facebookId,
-- a.LOGIN_TYPE loginType,
-- a.GOOGLE_ID googleId,
-- a.EMAIL email,
-- a.AVAILABLE_TICKET availableTicket,
-- a.USER_KAZOO_ID userKazooId,
b.FILTER_TYPE filterType, b.FILTER_TYPE filterType,
b.CAMPAIGN_AGENT_ID campaignAgentId b.CAMPAIGN_AGENT_ID campaignAgentId
FROM VSA_USERS a FROM VSA_USERS a
-- LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID
-- WHERE 1 = 1
-- AND a.COMPANY_SITE_ID = :p_company_site_id
...@@ -14,12 +14,12 @@ select ...@@ -14,12 +14,12 @@ select
b.IPCC_STATUS ipccStatus, b.IPCC_STATUS ipccStatus,
c.MOBILE mobileNumber, c.MOBILE mobileNumber,
d.EMAIL email d.EMAIL email
from CUSTOMER_LIST_MAPPING a from CUSTOMER_LIST_MAPPING a
join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID
left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE
FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID
left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL
FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID
where 1 = 1 where 1 = 1
and a.COMPANY_SITE_ID = :p_company_site_id and a.COMPANY_SITE_ID = :p_company_site_id
and a.CUSTOMER_LIST_ID = :p_customer_list_id and a.CUSTOMER_LIST_ID = :p_customer_list_id
...@@ -19,8 +19,8 @@ SELECT ...@@ -19,8 +19,8 @@ SELECT
CHANEL chanel CHANEL chanel
FROM CAMPAIGN_COMPLETE_CODE FROM CAMPAIGN_COMPLETE_CODE
where 1 = 1 where 1 = 1
AND STATUS = 1 AND STATUS = 1
and COMPANY_SITE_ID = :p_company_site_id and COMPANY_SITE_ID = :p_company_site_id
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