Commit e5e6e51e authored by ='s avatar =

hungtt-commit service camp-exe-interactive

parent d49770c8
......@@ -2,6 +2,7 @@ package com.viettel.campaign.repository;
import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.springframework.stereotype.Repository;
......@@ -16,6 +17,6 @@ public interface CampaignExecuteRepository {
List<ApParamDTO> getComboCampaignType(String companySiteId);
List<ContactCustResultDTO> getInteractiveResult(CampaignRequestDTO dto);
ResultDTO getInteractiveResult(CampaignRequestDTO dto);
//</editor-fold: hungtt>
}
......@@ -2,17 +2,30 @@ package com.viettel.campaign.repository.impl;
import com.viettel.campaign.repository.CampaignExecuteRepository;
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.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO;
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.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -26,6 +39,9 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
@Autowired
NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
EntityManager entityManager;
@Override
public List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType) {
List<ApParamDTO> list = new ArrayList<>();
......@@ -57,7 +73,95 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
}
@Override
public List<ContactCustResultDTO> getInteractiveResult(CampaignRequestDTO dto) {
return null;
public ResultDTO getInteractiveResult(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO();
List<ContactCustResultDTO> list = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
StringBuilder sqlBuilder = new StringBuilder();
try {
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
sqlBuilder.append(sql);
if (!DataUtil.isNullOrEmpty(dto.getCampaignName().trim())) {
sqlBuilder.append(" and upper(campaignName) like upper(:p_campaign_name)");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId().trim())) {
sqlBuilder.append(" and upper(userName) like upper(:p_user_name)");
}
SQLQuery query = session.createSQLQuery(sqlBuilder.toString());
query.setParameterList("p_list_campaign_id", dto.getCampaignId().trim().split(","));
query.setParameter("p_customer_id", dto.getCustomerId().trim());
query.setParameter("p_date_from", dto.getFromDate().trim());
query.setParameter("p_date_to", dto.getToDate().trim());
query.setParameterList("p_list_contact_status", dto.getContactStatus().trim().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().trim().split(","));
query.setParameterList("p_list_record_status", dto.getRecordStatus().trim().split(","));
query.setParameter("p_phone_number", dto.getPhoneNumber().trim());
query.setParameter("p_call_time_from", dto.getCallTimeFrom().trim());
query.setParameter("p_call_time_to", dto.getCallTimeTo().trim());
if (!DataUtil.isNullOrEmpty(dto.getCampaignName().trim())) {
query.setParameter("p_campaign_name", dto.getCampaignName().trim());
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId().trim())) {
query.setParameter("p_user_name", dto.getAgentId().trim());
}
query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new LongType());
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.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){
/**
* Hoi chi linh xac dinh thoi gian 24h ke tu khi da luu kieu gi??????
*/
} else {
contactCustResultDTO.setEnableEdit(false);
}
}
}
Page<ContactCustResultDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
logger.error(e.getMessage(), e);
} finally {
session.close();
}
return resultDTO;
}
}
......@@ -55,10 +55,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
public ResultDTO searchInteractiveResult(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO();
try {
List<ContactCustResultDTO> lst = campaignExecuteRepository.getInteractiveResult(dto);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(lst);
resultDTO = campaignExecuteRepository.getInteractiveResult(dto);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
......
......@@ -25,4 +25,20 @@ public class CampaignRequestDTO extends BaseDTO {
String companySiteId;
String agentId;
String types;
String phoneNumber;
String contactStatus;
String campaignStatus;
String customerId;
String customerName;
String callTimeTo;
String callTimeFrom;
String recordStatus;
String connectStatus;
String toDate;
String fromDate;
String campaignType;
String agentName;
String campaignId;
String surveyStatus;
String roleUser;
}
......@@ -60,12 +60,7 @@ public class CampaignController {
@PostMapping("/searchInteractiveResult")
@ResponseBody
public ResponseEntity<ResultDTO> searchInteractiveResult(@RequestBody CampaignRequestDTO dto) {
ResultDTO result = new ResultDTO();
try {
result = campaignExecuteService.searchInteractiveResult(dto);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
ResultDTO result = campaignExecuteService.searchInteractiveResult(dto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
}
......@@ -9,9 +9,19 @@ select b.campaign_code campaignCode,
g.status status,
a.status recordStatus
from contact_cust_result a
left join campaign b on a.campaign_id = b.campaign_id
left join vsa_users c on a.agent_id = c.user_id
left join customer d on a.customer_id = d.customer_id
left join campaign_complete_code e on a.contact_status = e.complete_value
left join campaign_complete_code f on a.call_status = e.complete_value
left join campaign g on a.campaign_id = b.campaign_id
left join campaign b on a.campaign_id = b.campaign_id
left join vsa_users c on a.agent_id = c.user_id
left join customer d on a.customer_id = d.customer_id
left join campaign_complete_code e on a.contact_status = e.complete_value
left join campaign_complete_code f on a.call_status = e.complete_value
left join campaign g on a.campaign_id = b.campaign_id
where a.campaign_id in (:p_list_campaign_id)
and a.customer_id like '%'||:p_customer_id||'%'
and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')
and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')
and a.contact_status in (:p_list_contact_status)
and a.call_status in (:p_list_survey_status)
and a.status in (:p_list_record_status)
and a.phone_number like '%'||:p_phone_number||'%'
and a.duration_call >= :p_call_time_from
and a.duration_call <= :p_call_time_to
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