Commit 9be1cbc9 authored by Vu Duy Anh's avatar Vu Duy Anh

anhvd accept merge

parents f819903b 1d26b209
...@@ -13,28 +13,26 @@ import java.util.List; ...@@ -13,28 +13,26 @@ import java.util.List;
@Repository @Repository
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public interface CampaignCustomerRepository extends JpaRepository<CampaignCustomer, Long>, CampaignCustomerRepositoryCustom { public interface CampaignCustomerRepository extends JpaRepository<CampaignCustomer, Long>, CampaignCustomerRepositoryCustom {
@Query(value = "SELECT COUNT(*) " +
" FROM CAMPAIGN_CUSTOMER CC " +
" JOIN CAMPAIGN C ON CC.CAMPAIGN_ID = C.CAMPAIGN_ID " +
" LEFT JOIN CAMPAIGN_COMPLETE_CODE CCC ON CC.STATUS = CCC.COMPLETE_VALUE" +
" WHERE CC.COMPANY_SITE_ID = :companySiteId " +
" AND CC.AGENT_ID = :agentId" +
" AND C.STATUS = 2 " +
" AND CC.RECALL_TIME <= SYSDATE " +
" AND CCC.IS_RECALL = 1", nativeQuery = true)
Long countRecallCustomer(@Param("companySiteId") Long pCompanySiteId, @Param("agentId") Long agentId);
@Query(value = "SELECT COUNT(*) " + @Query(value = "SELECT COUNT(*) " +
"FROM CAMPAIGN_CUSTOMER CC JOIN CAMPAIGN_COMPLETE_CODE CCC ON CC.CAMPAIGN_ID = CCC.CAMPAIGN_ID " + "FROM CAMPAIGN_CUSTOMER CC JOIN CAMPAIGN_COMPLETE_CODE CCC ON CC.CAMPAIGN_ID = CCC.CAMPAIGN_ID " +
"WHERE CC.STATUS = 3 AND CC.CAMPAIGN_ID = :campaignId AND CC.CUSTOMER_ID = :customerId AND CCC.IS_RECALL = 1 AND CCC.STATUS = 1 ", "WHERE CC.CAMPAIGN_ID = :campaignId " +
nativeQuery = true) "AND CC.CUSTOMER_ID = :customerId " +
"AND CC.STATUS = 3 " +
"AND CCC.IS_RECALL = 1 " +
"AND CCC.STATUS = 1 ", nativeQuery = true)
Long getCustomerRecall(@Param("campaignId") Long campaignId, @Param("customerId") Long customerId); Long getCustomerRecall(@Param("campaignId") Long campaignId, @Param("customerId") Long customerId);
@Query(value = "SELECT cc.customer_id \n" +
"FROM campaign_customer cc LEFT JOIN receive_cust_log cl ON cc.customer_id = cl.customer_id\n" +
"WHERE cc.campaign_id = :campaignId \n" +
" AND cc.agent_id = :agentId \n" +
" AND cc.in_campaign_status = 1 \n" +
" AND cl.customer_id IS NULL \n" +
" AND EXISTS(SELECT 1 \n" +
" FROM campaign_complete_code ccc \n" +
" WHERE cc.status = ccc.complete_value \n" +
" AND ccc.status = 1 \n" +
" AND ccc.is_recall = 1 \n" +
" AND ccc.complete_type = 2 \n" +
" AND ccc.company_site_id = :companySiteId) \n" +
" AND cc.recall_time <= SYSDATE\n" +
" AND cc.recall_time + interval :apParam MINUTE >= SYSDATE", nativeQuery = true)
List<CampaignCustomer> getCustomerRecallDate(@Param("campaignId") Long campaignId, @Param("agentId") Long agentId, @Param("companySiteId") Long companySiteId, @Param("apParam") String apParam);
CampaignCustomer findCampaignCustomerByCampaignCustomerId(Long id); CampaignCustomer findCampaignCustomerByCampaignCustomerId(Long id);
} }
package com.viettel.campaign.repository.ccms_full; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
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.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -23,7 +20,7 @@ public interface CampaignExecuteRepository { ...@@ -23,7 +20,7 @@ public interface CampaignExecuteRepository {
ResultDTO getInteractiveResult(CampaignRequestDTO dto); ResultDTO getInteractiveResult(CampaignRequestDTO dto);
List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto); List<ContactCusResDTO> getExcelInteractiveResult(CampaignRequestDTO dto);
List<ContactCustResultDTO> getContactCustById(CampaignRequestDTO dto); List<ContactCustResultDTO> getContactCustById(CampaignRequestDTO dto);
//</editor-fold: hungtt> //</editor-fold: hungtt>
......
...@@ -8,10 +8,7 @@ import com.viettel.campaign.utils.Constants; ...@@ -8,10 +8,7 @@ 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.utils.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
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.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
...@@ -105,11 +102,12 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -105,11 +102,12 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getInteractiveResult(CampaignRequestDTO dto) { public ResultDTO getInteractiveResult(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
List<ContactCustResultDTO> list = new ArrayList<>(); List<ContactCusResDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>(); Map<String, Object> 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(); StringBuilder sql = new StringBuilder();
...@@ -140,12 +138,14 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -140,12 +138,14 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sql.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1"); sql.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1");
sql.append(" ),"); sql.append(" ),");
sql.append(" data_temp as ("); sql.append(" data_temp as (");
sql.append(" select b.campaign_code campaignCode,"); sql.append(" select a.contact_cust_result_id contactCustResultId,");
sql.append(" a.create_time createTime,");
sql.append(" b.campaign_code campaignCode,");
sql.append(" b.campaign_name campaignName,"); sql.append(" b.campaign_name campaignName,");
sql.append(" c.user_name userName,"); sql.append(" c.user_name userName,");
sql.append(" a.phone_number phoneNumber,"); sql.append(" a.phone_number phoneNumber,");
sql.append(" d.name customerName,"); sql.append(" d.name customerName,");
sql.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,"); sql.append(" a.start_call startCall,");
sql.append(" e.complete_name contactStatus,"); sql.append(" e.complete_name contactStatus,");
sql.append(" f.complete_name surveyStatus,"); sql.append(" f.complete_name surveyStatus,");
sql.append(" g.status status,"); sql.append(" g.status status,");
...@@ -162,8 +162,6 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -162,8 +162,6 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sql.append(" and a.company_site_id = :p_company_site_id"); sql.append(" and a.company_site_id = :p_company_site_id");
sql.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')"); sql.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sql.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')"); sql.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sql.append(" and a.duration_call >= :p_call_time_from");
sql.append(" and a.duration_call <= :p_call_time_to");
sql.append(" and to_char(a.customer_id) like '%'||:p_customer_id||'%'"); sql.append(" and to_char(a.customer_id) like '%'||:p_customer_id||'%'");
sql.append(" and b.campaign_type in (select campaign_type from campaign_type_list)"); sql.append(" and b.campaign_type in (select campaign_type from campaign_type_list)");
sql.append(" and to_char(a.contact_status) in (select contact_status from contact_status_list)"); sql.append(" and to_char(a.contact_status) in (select contact_status from contact_status_list)");
...@@ -176,8 +174,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -176,8 +174,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sql.append(" ),"); sql.append(" ),");
sql.append(" data as ("); sql.append(" data as (");
sql.append(" select a.*, rownum row_ from data_temp a"); sql.append(" select a.*, rownum row_ from data_temp a");
sql.append(" where a.callTime >= :p_call_time_from");
sql.append(" and a.callTime <= :p_call_time_to");
sql.append(" )"); sql.append(" )");
sql.append(" select * from data"); sql.append(" select contactCustResultId, createTime, campaignCode, campaignName, userName, phoneNumber, customerName, startCall, contactStatus, surveyStatus, status, recordStatus, callTime from data");
sql.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))"); sql.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());
...@@ -189,25 +189,26 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -189,25 +189,26 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params.put("p_list_survey_status", dto.getSurveyStatus()); params.put("p_list_survey_status", dto.getSurveyStatus());
params.put("p_list_record_status", dto.getRecordStatus()); params.put("p_list_record_status", dto.getRecordStatus());
params.put("p_call_time_from", dto.getCallTimeFrom()); params.put("p_call_time_from", dto.getCallTimeFrom());
params.put("p_list_campaign_id", dto.getCallTimeTo()); params.put("p_call_time_to", dto.getCallTimeTo());
params.put("p_list_campaign_id", dto.getCampaignId());
params.put("p_phone_number", dto.getPhoneNumber()); params.put("p_phone_number", dto.getPhoneNumber());
params.put("p_campaign_name", DataUtil.isNullOrEmpty(dto.getCampaignName()) ? null : dto.getCampaignName().toUpperCase()); params.put("p_campaign_name", DataUtil.isNullOrEmpty(dto.getCampaignName()) ? null : dto.getCampaignName().toUpperCase());
params.put("p_user_name", dto.getAgentId().toUpperCase()); params.put("p_user_name", DataUtil.isNullOrEmpty(dto.getAgentId()) ? null : dto.getAgentId().toUpperCase());
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.toString(), params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class)); list = namedParameterJdbcTemplate.query(sql.toString(), params, BeanPropertyRowMapper.newInstance(ContactCusResDTO.class));
for (ContactCustResultDTO contactCustResultDTO : list) { for (ContactCusResDTO contactCusResDTO : list) {
if (!"AGENT".equals(dto.getRoleUser())) { if (!"AGENT".equals(dto.getRoleUser())) {
contactCustResultDTO.setEnableEdit(true); contactCusResDTO.setEnableEdit(true);
} else { } else {
if (contactCustResultDTO.getRecordStatus() == 2) { if ("2".equals(contactCusResDTO.getRecordStatus())) {
contactCustResultDTO.setEnableEdit(true); contactCusResDTO.setEnableEdit(true);
} else if (contactCustResultDTO.getRecordStatus() == 1 && isLower24Hour(contactCustResultDTO.getCreateTime())) { } else if ("1".equals(contactCusResDTO.getRecordStatus()) && isLower24Hour(contactCusResDTO.getCreateTime())) {
contactCustResultDTO.setEnableEdit(true); contactCusResDTO.setEnableEdit(true);
} else { } else {
contactCustResultDTO.setEnableEdit(false); contactCusResDTO.setEnableEdit(false);
} }
} }
} }
...@@ -226,9 +227,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -226,9 +227,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
} }
@Override @Override
public List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto) { @Transactional(DataSourceQualify.CCMS_FULL)
List<ContactCustResultDTO> list = new ArrayList<>(); public List<ContactCusResDTO> getExcelInteractiveResult(CampaignRequestDTO dto) {
Map<String, String> params = new HashMap<>(); List<ContactCusResDTO> list = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
try { try {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
...@@ -258,12 +260,14 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -258,12 +260,14 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sb.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1"); sb.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1");
sb.append(" ),"); sb.append(" ),");
sb.append(" data_temp as ("); sb.append(" data_temp as (");
sb.append(" select b.campaign_code campaignCode,"); sb.append(" select a.contact_cust_result_id contactCustResultId,");
sb.append(" a.create_time createTime,");
sb.append(" b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,"); sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,"); sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,"); sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,"); sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,"); sb.append(" a.start_call startCall,");
sb.append(" e.complete_name contactStatus,"); sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,"); sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,"); sb.append(" g.status status,");
...@@ -280,8 +284,6 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -280,8 +284,6 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sb.append(" and a.company_site_id = :p_company_site_id"); 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_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, '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 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 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.contact_status) in (select contact_status from contact_status_list)");
...@@ -294,8 +296,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -294,8 +296,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sb.append(" ),"); sb.append(" ),");
sb.append(" data as ("); sb.append(" data as (");
sb.append(" select a.*, rownum row_ from data_temp a"); sb.append(" select a.*, rownum row_ from data_temp a");
sb.append(" where a.callTime >= :p_call_time_from");
sb.append(" and a.callTime <= :p_call_time_to");
sb.append(" )"); sb.append(" )");
sb.append(" select * from data"); sb.append(" select campaignCode, createTime, campaignName, userName, phoneNumber, customerName, startCall, contactStatus, surveyStatus, status, recordStatus, callTime 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))"); 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());
...@@ -307,14 +311,15 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -307,14 +311,15 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params.put("p_list_survey_status", dto.getSurveyStatus()); params.put("p_list_survey_status", dto.getSurveyStatus());
params.put("p_list_record_status", dto.getRecordStatus()); params.put("p_list_record_status", dto.getRecordStatus());
params.put("p_call_time_from", dto.getCallTimeFrom()); params.put("p_call_time_from", dto.getCallTimeFrom());
params.put("p_list_campaign_id", dto.getCallTimeTo()); params.put("p_call_time_to", dto.getCallTimeTo());
params.put("p_list_campaign_id", dto.getCampaignId());
params.put("p_phone_number", dto.getPhoneNumber()); params.put("p_phone_number", dto.getPhoneNumber());
params.put("p_campaign_name", DataUtil.isNullOrEmpty(dto.getCampaignName()) ? null : dto.getCampaignName().toUpperCase()); params.put("p_campaign_name", DataUtil.isNullOrEmpty(dto.getCampaignName()) ? null : dto.getCampaignName().toUpperCase());
params.put("p_user_name", dto.getAgentId().toUpperCase()); params.put("p_user_name", DataUtil.isNullOrEmpty(dto.getAgentId()) ? null : dto.getAgentId().toUpperCase());
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(sb.toString(), params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class)); list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(ContactCusResDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} finally { } finally {
......
...@@ -519,7 +519,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -519,7 +519,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
stringBuilder.append(" where table_name = 'CUSTOMER'"); stringBuilder.append(" where table_name = 'CUSTOMER'");
stringBuilder.append(" )"); stringBuilder.append(" )");
stringBuilder.append(" select * from column_name_temp"); stringBuilder.append(" select * from column_name_temp");
stringBuilder.append(" where columnName not in (select column_name from campaign_customerlist_column)"); stringBuilder.append(" where columnName not in (select column_name from campaign_customerlist_column where column_name is not null)");
stringBuilder.append(" union all"); stringBuilder.append(" union all");
stringBuilder.append(" select title columnName, 0 isFix "); stringBuilder.append(" select title columnName, 0 isFix ");
stringBuilder.append(" from customize_fields, dual"); stringBuilder.append(" from customize_fields, dual");
...@@ -553,7 +553,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -553,7 +553,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
// String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-list-fields-to-show"); // String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-list-fields-to-show");
sqlBuilder.append(" select to_char(column_name) columnName, 1 isFix"); sqlBuilder.append(" select to_char(column_name) columnName, 1 isFix");
sqlBuilder.append(" from campaign_customerlist_column, dual"); sqlBuilder.append(" from campaign_customerlist_column, dual");
sqlBuilder.append(" where campaign_id = :p_campaign_id"); sqlBuilder.append(" where campaign_id = :p_campaign_id and column_name is not null");
sqlBuilder.append(" union all"); sqlBuilder.append(" union all");
sqlBuilder.append(" select customize_field_title columnName, 0 isFix"); sqlBuilder.append(" select customize_field_title columnName, 0 isFix");
sqlBuilder.append(" from campaign_customerlist_column"); sqlBuilder.append(" from campaign_customerlist_column");
......
...@@ -36,4 +36,7 @@ public interface CampaignExecuteService { ...@@ -36,4 +36,7 @@ public interface CampaignExecuteService {
ResultDTO callCustomer(ContactCustResultDTO dto); ResultDTO callCustomer(ContactCustResultDTO dto);
ResultDTO countRecallCustomer(Long companySiteId, Long agentId);
ResultDTO getCustomerRecall(Long campaignId, Long customerId);
} }
...@@ -30,8 +30,6 @@ public interface CampaignService { ...@@ -30,8 +30,6 @@ public interface CampaignService {
ResultDTO addNewCampaign(CampaignDTO campaignDTO); ResultDTO addNewCampaign(CampaignDTO campaignDTO);
Map countRecallCustomer(Long companySiteId, Long agentId);
ResultDTO findCampaignById(Long campaignId); ResultDTO findCampaignById(Long campaignId);
ResultDTO changeCampaignStatus(CampaignDTO dto); ResultDTO changeCampaignStatus(CampaignDTO dto);
...@@ -57,4 +55,5 @@ public interface CampaignService { ...@@ -57,4 +55,5 @@ public interface CampaignService {
ResultDTO getListFieldsToShow(CampaignRequestDTO dto); ResultDTO getListFieldsToShow(CampaignRequestDTO dto);
//</editor-fold> //</editor-fold>
} }
...@@ -110,7 +110,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -110,7 +110,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto) { public XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto) {
Locale locale = Locale.forLanguageTag("vi"); Locale locale = Locale.forLanguageTag("vi");
List<ContactCustResultDTO> list = campaignExecuteRepository.getExcelInteractiveResult(dto); List<ContactCusResDTO> list = campaignExecuteRepository.getExcelInteractiveResult(dto);
XSSFWorkbook workbook = new XSSFWorkbook(); XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet; Sheet sheet;
...@@ -194,9 +194,9 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -194,9 +194,9 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
writeCellContent(row, styleRow, col++, rowIndex); writeCellContent(row, styleRow, col++, rowIndex);
writeCellContent(row, styleRow, col++, list.get(i).getCampaignCode()); writeCellContent(row, styleRow, col++, list.get(i).getCampaignCode());
writeCellContent(row, styleRow, col++, list.get(i).getCampaignName()); writeCellContent(row, styleRow, col++, list.get(i).getCampaignName());
writeCellContent(row, styleRow, col++, list.get(i).getAgentId()); writeCellContent(row, styleRow, col++, list.get(i).getUserName());
writeCellContent(row, styleRow, col++, list.get(i).getPhoneNumber()); writeCellContent(row, styleRow, col++, list.get(i).getPhoneNumber());
writeCellContent(row, styleRow, col++, list.get(i).getCustomerId()); writeCellContent(row, styleRow, col++, list.get(i).getCustomerName());
writeCellContent(row, styleRow, col++, list.get(i).getCustomerName()); writeCellContent(row, styleRow, col++, list.get(i).getCustomerName());
writeCellContent(row, styleRow, col++, formatter.format(list.get(i).getCreateTime())); writeCellContent(row, styleRow, col++, formatter.format(list.get(i).getCreateTime()));
writeCellContent(row, styleRow, col++, list.get(i).getContactStatus()); writeCellContent(row, styleRow, col++, list.get(i).getContactStatus());
...@@ -495,4 +495,38 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -495,4 +495,38 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return result; return result;
} }
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO countRecallCustomer(Long companySiteId, Long agentId) {
Long count = campaignCustomerRepository.countRecallCustomer(companySiteId, agentId);
ResultDTO resultDTO = new ResultDTO();
if (count != null) {
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(count);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
resultDTO.setData(0);
}
return resultDTO;
}
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCustomerRecall(Long campaignId, Long customerId) {
Long count = campaignCustomerRepository.getCustomerRecall(campaignId, customerId);
ResultDTO resultDTO = new ResultDTO();
if (count != null) {
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(count);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
resultDTO.setData(0);
}
return resultDTO;
}
} }
...@@ -28,6 +28,7 @@ import java.util.HashMap; ...@@ -28,6 +28,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -170,26 +171,6 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -170,26 +171,6 @@ public class CampaignServiceImpl implements CampaignService {
return resultDTO; return resultDTO;
} }
@Transactional(DataSourceQualify.CCMS_FULL)
public Map countRecallCustomer(Long companySiteId, Long agentId) {
Map result = new HashMap();
Long count = campaignRepository.countRecallCustomer(companySiteId, agentId);
ResultDTO resultDTO = new ResultDTO();
if (count != null) {
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.put("info", resultDTO);
result.put("result", count);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
result.put("info", resultDTO);
result.put("result", 0);
}
return result;
}
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findCampaignById(Long campaignId) { public ResultDTO findCampaignById(Long campaignId) {
...@@ -524,6 +505,9 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -524,6 +505,9 @@ public class CampaignServiceImpl implements CampaignService {
mapColumn.put("EMAIL_ALLOWED", BundleUtils.getLangString("EMAIL_ALLOWED", locale)); mapColumn.put("EMAIL_ALLOWED", BundleUtils.getLangString("EMAIL_ALLOWED", locale));
mapColumn.put("SMS_ALLOWED", BundleUtils.getLangString("SMS_ALLOWED", locale)); mapColumn.put("SMS_ALLOWED", BundleUtils.getLangString("SMS_ALLOWED", locale));
mapColumn.put("IPCC_STATUS", BundleUtils.getLangString("IPCC_STATUS", locale)); mapColumn.put("IPCC_STATUS", BundleUtils.getLangString("IPCC_STATUS", locale));
mapColumn.put("EMAIL", BundleUtils.getLangString("EMAIL", locale));
mapColumn.put("CUSTOMER_TYPE", BundleUtils.getLangString("CUSTOMER_TYPE", locale));
mapColumn.put("AVATAR_LINK", BundleUtils.getLangString("AVATAR_LINK", locale));
return mapColumn; return mapColumn;
} }
private String generateCampaignCode(String campaignType, Short chanel) { private String generateCampaignCode(String campaignType, Short chanel) {
......
package com.viettel.campaign.web.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class ContactCusResDTO implements Serializable {
private Long contactCustResultId;
private String campaignCode;
private String campaignName;
private String userName;
private String phoneNumber;
private String customerName;
private Date startCall;
private Date createTime;
private String contactStatus;
private String surveyStatus;
private String status;
private String recordStatus;
private Long callTime;
private Boolean enableEdit;
}
...@@ -11,23 +11,23 @@ import java.io.Serializable; ...@@ -11,23 +11,23 @@ import java.io.Serializable;
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class FieldsToShowDTO extends BaseDTO implements Serializable { public class FieldsToShowDTO implements Serializable {
private Long campaignCusListColId; // private Long campaignCusListColId;
private Long companySiteId; // private Long companySiteId;
private Long campaignId; // private Long campaignId;
private String columnName; private String columnName;
private String columnTitle; private String columnTitle;
private Long orderIndex; // private Long orderIndex;
private Long customizeFieldId; // private Long customizeFieldId;
private String customizeFieldTitle; // private String customizeFieldTitle;
private Boolean isFix; private Boolean isFix;
} }
...@@ -96,13 +96,6 @@ public class CampaignController { ...@@ -96,13 +96,6 @@ public class CampaignController {
return campaignService.addNewCampaign(dto); return campaignService.addNewCampaign(dto);
} }
@GetMapping("/countRecallCustomer")
@ResponseBody
public ResponseEntity countRecallCustomer(@RequestParam("companySiteId") Long companySiteId, @RequestParam("agentId") Long agentId) {
Map result = campaignService.countRecallCustomer(companySiteId, agentId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@GetMapping("/findByCampaignId") @GetMapping("/findByCampaignId")
@ResponseBody @ResponseBody
public ResponseEntity findByCampaignId(@RequestParam("campaignId") Long campaignId) { public ResponseEntity findByCampaignId(@RequestParam("campaignId") Long campaignId) {
...@@ -240,4 +233,18 @@ public class CampaignController { ...@@ -240,4 +233,18 @@ public class CampaignController {
ResultDTO resultDTO = campaignService.getListFieldsToShow(dto); ResultDTO resultDTO = campaignService.getListFieldsToShow(dto);
return new ResponseEntity<>(resultDTO, HttpStatus.OK); return new ResponseEntity<>(resultDTO, HttpStatus.OK);
} }
@GetMapping("/countRecallCustomer")
@ResponseBody
public ResponseEntity countRecallCustomer(@RequestParam("companySiteId") Long companySiteId, @RequestParam("agentId") Long agentId) {
ResultDTO result = campaignExecuteService.countRecallCustomer(companySiteId, agentId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@GetMapping("/getCustomerRecall")
@ResponseBody
public ResponseEntity getCustomerRecall(@RequestParam("campaignId") Long campaignId, @RequestParam("customerId") Long customerId) {
ResultDTO result = campaignExecuteService.getCustomerRecall(campaignId, customerId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
} }
...@@ -64,3 +64,6 @@ CALL_ALLOWED = CALL_ALLOWED ...@@ -64,3 +64,6 @@ CALL_ALLOWED = CALL_ALLOWED
EMAIL_ALLOWED = EMAIL_ALLOWED EMAIL_ALLOWED = EMAIL_ALLOWED
SMS_ALLOWED = SMS_ALLOWED SMS_ALLOWED = SMS_ALLOWED
IPCC_STATUS = IPCC_STATUS IPCC_STATUS = IPCC_STATUS
EMAIL = EMAIL
CUSTOMER_TYPE = CUSTOMER_TYPE
AVATAR_LINK = AVATAR_LINK
...@@ -66,3 +66,6 @@ CALL_ALLOWED = CALL_ALLOWED ...@@ -66,3 +66,6 @@ CALL_ALLOWED = CALL_ALLOWED
EMAIL_ALLOWED = EMAIL_ALLOWED EMAIL_ALLOWED = EMAIL_ALLOWED
SMS_ALLOWED = SMS_ALLOWED SMS_ALLOWED = SMS_ALLOWED
IPCC_STATUS = IPCC_STATUS IPCC_STATUS = IPCC_STATUS
EMAIL = EMAIL
CUSTOMER_TYPE = CUSTOMER_TYPE
AVATAR_LINK = AVATAR_LINK
...@@ -2,7 +2,7 @@ with column_name_temp as ( ...@@ -2,7 +2,7 @@ with column_name_temp as (
select column_name columnName, 1 isFix from user_tab_columns, dual select column_name columnName, 1 isFix from user_tab_columns, dual
where table_name = 'CUSTOMER' where table_name = 'CUSTOMER'
) )
select * from column_name_temp where columnName not in (select column_name from campaign_customerlist_column) select * from column_name_temp where columnName not in (select column_name from campaign_customerlist_column where column_name is not null)
union all union all
select title columnName, 0 isFix from customize_fields, dual select title columnName, 0 isFix from customize_fields, dual
where function_code = 'CUSTOMER' where function_code = 'CUSTOMER'
......
select to_char(column_name) columnName, 1 isFix from campaign_customerlist_column, dual where campaign_id = :p_campaign_id select to_char(column_name) columnName, 1 isFix from campaign_customerlist_column, dual where campaign_id = :p_campaign_id and column_name is not null
union all union all
select customize_field_title columnName, 0 isFix from campaign_customerlist_column where campaign_id = :p_campaign_id select customize_field_title columnName, 0 isFix from campaign_customerlist_column where campaign_id = :p_campaign_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