Commit 1d26b209 authored by ='s avatar =

hungtt-commit campaign execute interactive

parent 33f54075
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.ApParamDTO;
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.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
......@@ -23,7 +20,7 @@ public interface CampaignExecuteRepository {
ResultDTO getInteractiveResult(CampaignRequestDTO dto);
List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto);
List<ContactCusResDTO> getExcelInteractiveResult(CampaignRequestDTO dto);
List<ContactCustResultDTO> getContactCustById(CampaignRequestDTO dto);
//</editor-fold: hungtt>
......
......@@ -8,10 +8,7 @@ import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.ApParamDTO;
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.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
......@@ -105,11 +102,12 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getInteractiveResult(CampaignRequestDTO dto) {
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 {
// String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
StringBuilder sql = new StringBuilder();
......@@ -140,12 +138,14 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sql.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1");
sql.append(" ),");
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(" c.user_name userName,");
sql.append(" a.phone_number phoneNumber,");
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(" f.complete_name surveyStatus,");
sql.append(" g.status status,");
......@@ -162,8 +162,6 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
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_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 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)");
......@@ -176,8 +174,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sql.append(" ),");
sql.append(" data as (");
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(" 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))");
params.put("p_company_site_id", dto.getCompanySiteId());
......@@ -189,25 +189,26 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params.put("p_list_survey_status", dto.getSurveyStatus());
params.put("p_list_record_status", dto.getRecordStatus());
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_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_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())) {
contactCustResultDTO.setEnableEdit(true);
contactCusResDTO.setEnableEdit(true);
} else {
if (contactCustResultDTO.getRecordStatus() == 2) {
contactCustResultDTO.setEnableEdit(true);
} else if (contactCustResultDTO.getRecordStatus() == 1 && isLower24Hour(contactCustResultDTO.getCreateTime())) {
contactCustResultDTO.setEnableEdit(true);
if ("2".equals(contactCusResDTO.getRecordStatus())) {
contactCusResDTO.setEnableEdit(true);
} else if ("1".equals(contactCusResDTO.getRecordStatus()) && isLower24Hour(contactCusResDTO.getCreateTime())) {
contactCusResDTO.setEnableEdit(true);
} else {
contactCustResultDTO.setEnableEdit(false);
contactCusResDTO.setEnableEdit(false);
}
}
}
......@@ -226,9 +227,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
}
@Override
public List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto) {
List<ContactCustResultDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>();
@Transactional(DataSourceQualify.CCMS_FULL)
public List<ContactCusResDTO> getExcelInteractiveResult(CampaignRequestDTO dto) {
List<ContactCusResDTO> list = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
try {
StringBuilder sb = new StringBuilder();
......@@ -258,12 +260,14 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
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(" 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(" 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(" a.start_call startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
......@@ -280,8 +284,6 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
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)");
......@@ -294,8 +296,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sb.append(" ),");
sb.append(" data as (");
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(" 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))");
params.put("p_company_site_id", dto.getCompanySiteId());
......@@ -307,14 +311,15 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params.put("p_list_survey_status", dto.getSurveyStatus());
params.put("p_list_record_status", dto.getRecordStatus());
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_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_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) {
logger.error(e.getMessage(), e);
} finally {
......
......@@ -110,7 +110,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Transactional(DataSourceQualify.CCMS_FULL)
public XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto) {
Locale locale = Locale.forLanguageTag("vi");
List<ContactCustResultDTO> list = campaignExecuteRepository.getExcelInteractiveResult(dto);
List<ContactCusResDTO> list = campaignExecuteRepository.getExcelInteractiveResult(dto);
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet;
......@@ -194,9 +194,9 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
writeCellContent(row, styleRow, col++, rowIndex);
writeCellContent(row, styleRow, col++, list.get(i).getCampaignCode());
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).getCustomerId());
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++, list.get(i).getContactStatus());
......
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;
}
server:
port: 1111
port: 9999
spring:
application:
name: campaign
......
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