Commit 7399e170 authored by Tu Bach's avatar Tu Bach

tubn campaign execute update

parent 64f31ff4
......@@ -8,5 +8,5 @@ import java.util.List;
@Repository
public interface CampaignCustomerRepositoryCustom {
List<CampaignCustomerDTO> getDataCampaignCustomer(CampaignCustomerDTO dto, String expression);
List<CampaignCustomerDTO> getDataCampaignCustomer(CampaignCustomerDTO dto, String expression, String dungsai);
}
......@@ -4,6 +4,7 @@ import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.ApParam;
import com.viettel.campaign.repository.ccms_full.ApParamRepository;
import com.viettel.campaign.repository.ccms_full.CampaignCustomerRepositoryCustom;
import com.viettel.campaign.service.impl.CampaignExecuteServiceImp;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil;
......@@ -15,6 +16,8 @@ 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;
......@@ -26,24 +29,22 @@ import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Transactional(DataSourceQualify.CCMS_FULL)
public class CampaignCustomerRepositoryImpl implements CampaignCustomerRepositoryCustom {
@Autowired
ApParamRepository apParamRepository;
private static final Logger logger = LoggerFactory.getLogger(CampaignExecuteServiceImp.class);
@Autowired
@PersistenceContext(unitName = DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager;
@Override
public List<CampaignCustomerDTO> getDataCampaignCustomer(CampaignCustomerDTO customerDTO, String expression) {
public List<CampaignCustomerDTO> getDataCampaignCustomer(CampaignCustomerDTO customerDTO, String expression, String dungsai) {
List<CampaignCustomerDTO> result = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
......@@ -55,8 +56,10 @@ public class CampaignCustomerRepositoryImpl implements CampaignCustomerRepositor
query.setParameter("agentId", customerDTO.getAgentId());
}
if (expression.contains(":dungSai")) {
List<ApParam> apParam = apParamRepository.findAllParam("DUNG_SAI");
query.setParameter("dungSai", apParam.get(0).getParValue());
query.setParameter("dungSai", dungsai);
}
if (expression.contains(":sysdate")) {
query.setParameter("sysdate", new Date());
}
query.addScalar("customerId", new LongType());
......@@ -66,7 +69,7 @@ public class CampaignCustomerRepositoryImpl implements CampaignCustomerRepositor
result = query.list();
} catch (Exception ex) {
// ex.printStackTrace();
logger.error(ex.getMessage(), ex);
} finally {
session.close();
}
......
......@@ -591,7 +591,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
return result;
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
} finally {
if (null != session) {
session.close();
......
......@@ -65,7 +65,6 @@ public class ApParamServiceImpl implements ApParamService {
result.setData(apparam);
}
} catch (Exception e) {
// e.printStackTrace();
logger.error(e.getMessage(), e);
}
......
......@@ -88,6 +88,9 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Autowired
CustomerTimeRepository customerTimeRepository;
@Autowired
ApParamRepository apParamRepository;
public CampaignExecuteServiceImp() throws NoSuchAlgorithmException {
}
......@@ -293,7 +296,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
} else {
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
data.put("dialModeManual", campaignSystemStatus);
data.put("campaignSystemStatus", campaignSystemStatus);
data.put("campaignExecuting", campaignExecuting);
result.setData(data);
}
......@@ -381,15 +384,13 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Override
public ResultDTO getCustomer(CampaignCustomerDTO dto) {
ResultDTO result = new ResultDTO();
String dialMode = getDialModeAtCurrent(dto.getCompanySiteId(), dto.getCampaignId());
//Agents agents = agentsRepository.findByAgentId(dto.getAgentId());
//TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId()));
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId()));
// String dialMode = getDialModeAtCurrent(dto.getCompanySiteId(), dto.getCampaignId());
List<ApParam> apParam = apParamRepository.findAllParam("DUNG_SAI");
List<CampaignCustomerDTO> lst = new ArrayList<>();
// Khách hàng đến thời điểm hẹn gọi lại và là khách hàng mà chính NSD hẹn gọi lại
StringBuilder sb = new StringBuilder();
sb.append("SELECT CC.CUSTOMER_ID AS customerId");
sb.append(" SELECT CC.CUSTOMER_ID AS customerId");
sb.append(" FROM CAMPAIGN_CUSTOMER CC");
sb.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
sb.append(" AND CC.COMPANY_SITE_ID = :companySiteId");
......@@ -402,12 +403,14 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
sb.append(" AND IS_RECALL = 1");
sb.append(" AND COMPLETE_TYPE = 2");
sb.append(" AND COMPANY_SITE_ID = :companySiteId)");
sb.append(" AND CC.RECALL_TIME <= SYSDATE");
sb.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') >= SYSDATE");
sb.append(" AND CC.RECALL_TIME <= :sysdate");
sb.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') >= :sysdate");
sb.append(" AND CC.AGENT_ID = :agentId");
// Khách hàng đến thời điểm hẹn gọi lại và không là khách hàng mà NSD dùng hẹn gọi lại
// nhưng TVV hẹn gọi lại không đăng nhập hoặc không thực hiện chiến dịch hiện tại
StringBuilder sb2 = new StringBuilder();
sb2.append("SELECT CC.CUSTOMER_ID AS customerId");
sb2.append(" SELECT CC.CUSTOMER_ID AS customerId");
sb2.append(" FROM CCMS_FULL.CAMPAIGN_CUSTOMER CC");
sb2.append(" LEFT JOIN ACD_FULL.AGENTS AG ON CC.AGENT_ID = AG.AGENT_ID AND CC.CAMPAIGN_ID = AG.CURRENT_CAMPAIGN_ID");
sb2.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
......@@ -421,12 +424,13 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
sb2.append(" AND IS_RECALL = 1");
sb2.append(" AND COMPLETE_TYPE = 2");
sb2.append(" AND COMPANY_SITE_ID = :companySiteId)");
sb2.append(" AND CC.RECALL_TIME <= SYSDATE");
sb2.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') >= SYSDATE");
sb2.append(" AND CC.RECALL_TIME <= :sysdate");
sb2.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') >= :sysdate");
sb2.append(" AND (AG.CAMPAIGN_SYSTEM_STATUS IS NULL OR AG.CAMPAIGN_SYSTEM_STATUS <> 'AVAILABLE')");
// Khách hàng là khách hàng hẹn gọi lại nhưng thời gian hẹn gọi lại đã quá thời gian hẹn gọi lại + dung sai
StringBuilder sb3 = new StringBuilder();
sb3.append("SELECT CC.CUSTOMER_ID AS customerId");
sb3.append(" SELECT CC.CUSTOMER_ID AS customerId");
sb3.append(" FROM CAMPAIGN_CUSTOMER CC");
sb3.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
sb3.append(" AND CC.COMPANY_SITE_ID = :companySiteId");
......@@ -439,10 +443,11 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
sb3.append(" AND IS_RECALL = 1");
sb3.append(" AND COMPLETE_TYPE = 2");
sb3.append(" AND COMPANY_SITE_ID = :companySiteId)");
sb3.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') <= SYSDATE");
sb3.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') <= :sysdate");
// Khách hàng mới
StringBuilder sb4 = new StringBuilder();
sb4.append("SELECT CC.CUSTOMER_ID AS customerId ");
sb4.append(" SELECT CC.CUSTOMER_ID AS customerId ");
sb4.append(" FROM CAMPAIGN_CUSTOMER CC");
sb4.append(" INNER JOIN CUSTOMER C ON CC.CUSTOMER_ID = C.CUSTOMER_ID");
sb4.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
......@@ -454,8 +459,10 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
sb4.append(" AND C.CALL_ALLOWED = 1");
sb4.append(" AND C.IPCC_STATUS = 'active'");
// Khách hàng không liên lạc được nhưng chưa phải là cuộc gọi kết thúc
// và có số lần đã gọi < Số lần gọi tối đa được cấu hình và khoảng cách giữa 2 lần gọi < thời gian tương tác giữa 2 lần gọi được cấu hình
StringBuilder sb5 = new StringBuilder();
sb5.append("SELECT CC.CUSTOMER_ID AS customerId");
sb5.append(" SELECT CC.CUSTOMER_ID AS customerId");
sb5.append(" FROM CAMPAIGN_CUSTOMER CC");
sb5.append(" INNER JOIN CAMPAIGN CA ON CC.CAMPAIGN_ID = CA.CAMPAIGN_ID");
sb5.append(" INNER JOIN CUSTOMER CU ON CC.CUSTOMER_ID = CU.CUSTOMER_ID");
......@@ -483,32 +490,27 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
String type = "";
try {
// Khách hàng đến thời điểm hẹn gọi lại và là khách hàng mà chính NSD hẹn gọi lại
List<CampaignCustomerDTO> lst1 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus1Str);
List<CampaignCustomerDTO> lst1 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus1Str, apParam.get(0).getParValue());
if (lst1.size() > 0) {
lst = lst1;
type = "1";
} else {
// Khách hàng đến thời điểm hẹn gọi lại và không là khách hàng mà NSD dùng hẹn gọi lại nhưng TVV hẹn gọi lại không đăng nhập hoặc không thực hiện chiến dịch hiện tại
List<CampaignCustomerDTO> lst2 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus2Str);
List<CampaignCustomerDTO> lst2 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus2Str, apParam.get(0).getParValue());
if (lst2.size() > 0) {
lst = lst2;
type = "2";
} else {
// Khách hàng là khách hàng hẹn gọi lại nhưng thời gian hẹn gọi lại đã quá thời gian hẹn gọi lại + dung sai
List<CampaignCustomerDTO> lst3 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus3Str);
List<CampaignCustomerDTO> lst3 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus3Str, apParam.get(0).getParValue());
if (lst3.size() > 0) {
lst = lst3;
type = "3";
} else {
// Khách hàng mới
List<CampaignCustomerDTO> lst4 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus4Str);
List<CampaignCustomerDTO> lst4 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus4Str, apParam.get(0).getParValue());
if (lst4.size() > 0) {
lst = lst4;
type = "4";
} else {
// Khách hàng không liên lạc được nhưng chưa phải là cuộc gọi kết thúc và có số lần đã gọi < Số lần gọi tối đa được cấu hình và khoảng cách giữa 2 lần gọi < thời gian tương tác giữa 2 lần gọi được cấu hình
List<CampaignCustomerDTO> lst5 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus5Str);
List<CampaignCustomerDTO> lst5 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus5Str, apParam.get(0).getParValue());
lst = lst5;
type = "5";
}
......@@ -993,7 +995,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
cc = campaignCustomerRepository.findCampaignCustomersByCampaignIdAndCustomerId(dto.getCampaignId(), dto.getCustomerId());
if (dto.getContactStatus().equals((short) 1)) {
cc.setStatus(dto.getCallStatus().shortValue());
} else if (dto.getContactStatus().equals((short) 2)) {
} else {
c = campaignRepository.findByCampaignId(dto.getCampaignId());
if (cc.getRecallCount().equals(c.getMaxRecall().longValue())) {
cc.setStatus((short) 4);
......
......@@ -179,7 +179,7 @@ public class CustomerServiceImpl implements CustomerService {
resultDTO.setDescription("customerDTO null");
}
} catch (Exception e) {
// e.printStackTrace();
LOGGER.error(e.getMessage(), e);;
}
return resultDTO;
......@@ -205,7 +205,7 @@ public class CustomerServiceImpl implements CustomerService {
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
// e.printStackTrace();
LOGGER.error(e.getMessage(), e);;
}
return resultDTO;
}
......@@ -239,8 +239,7 @@ public class CustomerServiceImpl implements CustomerService {
return DataUtil.convertStringToDateDDMMYYYYHHMISS(DataUtil.safeToString(list.get(0)));
}
} catch (Exception e) {
//logger.info(e.getMessage(), e);
// e.printStackTrace();
LOGGER.info(e.getMessage(), e);
}
return new Date();
}
......@@ -295,7 +294,7 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO;
}
} catch (Exception e) {
LOGGER.error(e.getMessage());
LOGGER.error(e.getMessage(), e);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription("Error");
return resultDTO;
......@@ -324,8 +323,6 @@ public class CustomerServiceImpl implements CustomerService {
customerList.setUpdateAt(new Date());
customerList.setSource(customerListDTO.getSource());
customerList.setCustomerListId(customerListDTO.getCustomerListId());
customerListRepository.save(customerList);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
......@@ -339,7 +336,7 @@ public class CustomerServiceImpl implements CustomerService {
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
// e.printStackTrace();
LOGGER.error(e.getMessage(), e);;
}
return resultDTO;
......@@ -372,7 +369,7 @@ public class CustomerServiceImpl implements CustomerService {
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
// e.printStackTrace();
LOGGER.error(e.getMessage(), e);;
}
return resultDTO;
}
......@@ -421,7 +418,7 @@ public class CustomerServiceImpl implements CustomerService {
result.setTotalRow(customerContactRepository.findByCustomerIdAndAndContactTypeAndContact(customer.getCustomerId(), customer.getContactType(), customer.getContact(), null).size());
} catch (Exception e) {
// e.printStackTrace();
LOGGER.error(e.getMessage(), e);;
}
return result;
}
......@@ -444,7 +441,7 @@ public class CustomerServiceImpl implements CustomerService {
result.setDescription("campaign customer data null");
}
} catch (Exception e) {
// e.printStackTrace();
LOGGER.error(e.getMessage(), e);;
}
return result;
}
......@@ -1552,7 +1549,7 @@ public class CustomerServiceImpl implements CustomerService {
rootNode = new RSQLParser().parse(queryString);
query = rootNode.accept(visitor, entityManager);
} catch (Exception e) {
// e.printStackTrace();
LOGGER.error(e.getMessage(), e);;
throw new IllegalArgumentException(e.getMessage());
}
return query;
......
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