Commit ae0b0d94 authored by Tu Bach's avatar Tu Bach

Merge branch 'tubn'

# Conflicts:
#	src/main/java/com/viettel/campaign/repository/CampaignRepositoryCustom.java
#	src/main/java/com/viettel/campaign/repository/CampaignRepositoryImpl.java
#	src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
#	src/main/java/com/viettel/campaign/web/rest/controller/CampaignController.java
parents 975685ae b1e902ae
......@@ -93,6 +93,8 @@
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<!-- <scope>system</scope>-->
<!-- <systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>-->
<version>1.0</version>
</dependency>
<dependency>
......
package com.viettel.campaign.dto.request_dto;
import com.viettel.campaign.web.dto.BaseDTO;
import lombok.Getter;
import lombok.Setter;
......@@ -12,10 +13,7 @@ import java.util.Date;
@Getter
@Setter
public class CampaignRequestDTO {
int pageSize;
int page;
String sort;
public class CampaignRequestDTO extends BaseDTO {
String campaignCode;
String campaignName;
Short status;
......
......@@ -6,9 +6,11 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ApParamRepository extends JpaRepository<ApParam, Long>, ApParamRepositoryCustom {
Page<ApParam> findAll(Pageable pageable);
......
package com.viettel.campaign.repository;
import com.viettel.campaign.model.ApParam;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ApParamRepositoryCustom {
}
......@@ -6,9 +6,11 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCompleteCode, Long> {
Page<CampaignCompleteCode> findAll(Pageable pageable);
......
package com.viettel.campaign.repository;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.dto.CampaignDTO;
import com.viettel.campaign.dto.ResultDTO;
import com.viettel.campaign.dto.request_dto.CampaignRequestDTO;
import com.viettel.campaign.model.Campaign;
import org.springframework.data.domain.Page;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CampaignRepositoryCustom {
List<CampaignDTO> searchCampaignExecute(String agentId, Pageable pageable);
ResultDTO search(CampaignRequestDTO requestDto);
}
package com.viettel.campaign.repository;
import com.viettel.campaign.web.dto.CampaignDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
@Autowired
EntityManager entityManager;
@Override
public List<CampaignDTO> searchCampaignExecute(String agentId, Pageable pageable) {
List<CampaignDTO> lst = new ArrayList<>();
String expression = new StringBuilder()
//.append(" SELECT C.CODECAMPAIGN_ID, C.CAMPAIGN_NAME, C.CONTENT, C.START_TIME, C.END_TIME, C.STATUS ")
.append(" SELECT CAMPAIGN_ID, COMPLETE_NAME AS CAMPAIGN_NAME, DESCRIPTION AS CONTENT, UPDATE_BY AS START_TIME, UPDATE_BY AS END_TIME, STATUS ")
.append(" FROM CAMPAIGN_COMPLETE_CODE C ")
//.append(" INNER JOIN CAMPAIGN_AGENT CA ON C.CAMPAIGN_ID = CA.CAMPAIGN_ID ")
//.append(" WHERE 1 = 1 ")
//.append(" AND CA.AGENT_ID = :pAgentId ")
//.append(" AND C.STATUS IN (2,3) ")
.toString();
Query query = entityManager.createNativeQuery(expression);
//query.setParameter("pAgentId", agentId);
List<Object[]> data = query.getResultList();
for (Object[] obj : data) {
CampaignDTO item = new CampaignDTO();
item.setCampaignId((BigDecimal) obj[0]);
item.setCampaignName((String)obj[1]);
item.setContent((String)obj[2]);
item.setStartTime((Date)obj[3]);
item.setEndTime((Date)obj[4]);
item.setStatus((BigDecimal) obj[5]);
lst.add(item);
}
return lst;
}
}
......@@ -5,9 +5,11 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CustomerRepository extends JpaRepository<Customer, Long> {
Page<Customer> findAll(Pageable pageable);
......
package com.viettel.campaign.repository;
package com.viettel.campaign.repository.impl;
import com.viettel.campaign.model.ApParam;
import com.viettel.campaign.repository.ApParamRepositoryCustom;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
......
package com.viettel.campaign.repository.impl;
import com.viettel.campaign.dto.CampaignDTO;
import com.viettel.campaign.dto.ResultDTO;
import com.viettel.campaign.dto.request_dto.CampaignRequestDTO;
import com.viettel.campaign.repository.CampaignRepositoryCustom;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.DateTimeUtil;
import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.utils.*;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.hibernate.type.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Repository
......@@ -27,55 +31,93 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
public List<CampaignDTO> searchCampaignExecute(String agentId, Pageable pageable) {
List<CampaignDTO> lst = new ArrayList<>();
String expression = new StringBuilder()
.append(" SELECT C.CAMPAIGN_ID, C.CAMPAIGN_NAME, C.STATUS ")
.append(" SELECT C.CAMPAIGN_ID, C.CAMPAIGN_NAME, C.CONTENT, C.START_TIME, C.END_TIME, C.STATUS ")
//.append(" SELECT CAMPAIGN_COMPLETE_CODE_ID AS CAMPAIGN_ID, COMPLETE_NAME AS CAMPAIGN_NAME, DESCRIPTION AS CONTENT, UPDATE_BY AS START_TIME, UPDATE_BY AS END_TIME, STATUS ")
.append(" FROM CAMPAIGN C ")
.append(" INNER JOIN CAMPAIGN_AGENT CA ON C.CAMPAIGN_ID = CA.CAMPAIGN_ID ")
.append(" WHERE 1 = 1 ")
.append(" AND CA.AGENT_ID = :pAgentId ")
//.append(" AND CA.AGENT_ID = :pAgentId ")
.append(" AND C.STATUS IN (2,3) ")
.toString();
try {
Query query = entityManager.createNativeQuery(expression);
query.setParameter("pAgentId", agentId);
//query.setParameter("pAgentId", agentId);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<Object[]> data = query.getResultList();
for (Object[] obj : data) {
CampaignDTO item = new CampaignDTO();
item.setCampaignId((Long)obj[0]);
item.setCampaignName((String)obj[1]);
item.setStatus((Short) obj[0]);
item.setCampaignId((BigDecimal) obj[0]);
item.setCampaignName((String) obj[1]);
item.setContent((String) obj[2]);
item.setStartTime((Date) obj[3]);
item.setEndTime((Date) obj[4]);
item.setStatus((BigDecimal) obj[5]);
lst.add(item);
}
return lst;
} catch (Exception e) {
e.printStackTrace();
}
return lst;
}
@Override
public ResultDTO search(CampaignRequestDTO requestDto) {
ResultDTO result = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
try {
String sqlStr = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-by-params");
// sqlStr.append(" SELECT CAMPAIGN_CODE campaignCode, CAMPAIGN_NAME campaignName, CAMPAIGN_TYPE campaignType, CHANEL chanel, START_TIME startTime, END_TIME endTime, CUSTOMER_NUMBER customerNumber, STATUS status FROM CAMPAIGN WHERE 1 = 1 ");
// if(!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { sqlStr.append(" AND UPPER(CAMPAIGN_CODE) LIKE :code"); }
// if(!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) { sqlStr.append(" AND UPPER(CAMPAIGN_NAME) LIKE :name"); }
// if(requestDto.getStatus() != null) { sqlStr.append(" AND STATUS = :status"); }
// if(requestDto.getFromDateFr() != null && DateTimeUtil.isValid(requestDto.getFromDateFr().getTime())) { sqlStr.append(" AND START_TIME >= :frDateFr"); }
// if(requestDto.getFromDateTo() != null && DateTimeUtil.isValid(requestDto.getFromDateTo().getTime())) { sqlStr.append(" AND START_TIME <= :frDateTo"); }
// if(requestDto.getToDateFr() != null && DateTimeUtil.isValid(requestDto.getToDateFr().getTime())) { sqlStr.append(" AND END_TIME >= :toDateFr"); }
// if(requestDto.getToDateTo() != null && DateTimeUtil.isValid(requestDto.getToDateTo().getTime())) { sqlStr.append(" AND END_TIME <= :toDateTo"); }
// if(!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
//// sqlStr.append(" AND ")
// }
// if(!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) {
//
// }
// if(requestDto.getType() != null) { sqlStr.append(" AND CAMPAIGN_TYPE = :type"); }
// if(requestDto.getChanel() != null) { sqlStr.append(" AND CHANEL = :chanel"); }
StringBuilder sqlStr = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-by-params"));
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
sqlStr.append(" AND UPPER(CAMPAIGN_CODE) LIKE :p_code");
}
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) {
sqlStr.append(" AND UPPER(CAMPAIGN_NAME) LIKE :p_name");
}
if (requestDto.getStatus() != null) {
sqlStr.append(" AND STATUS = :p_status");
}
if (requestDto.getFromDateFr() != null && DateTimeUtil.isValid(requestDto.getFromDateFr().getTime())) {
sqlStr.append(" AND START_TIME >= :p_frDateFr");
}
if (requestDto.getFromDateTo() != null && DateTimeUtil.isValid(requestDto.getFromDateTo().getTime())) {
sqlStr.append(" AND START_TIME <= :p_frDateTo");
}
if (requestDto.getToDateFr() != null && DateTimeUtil.isValid(requestDto.getToDateFr().getTime())) {
sqlStr.append(" AND END_TIME >= :p_toDateFr");
}
if (requestDto.getToDateTo() != null && DateTimeUtil.isValid(requestDto.getToDateTo().getTime())) {
sqlStr.append(" AND END_TIME <= :p_toDateTo");
}
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
// sqlStr.append(" AND ")
}
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) {
}
if (requestDto.getType() != null) {
sqlStr.append(" AND CAMPAIGN_TYPE = :p_type");
}
if (requestDto.getChanel() != null) {
sqlStr.append(" AND CHANEL = :p_chanel");
}
Query query = entityManager.createNativeQuery(sqlStr, CampaignDTO.class);
// Query query = entityManager.createNativeQuery(sqlStr.toString(), Campaign.class);
SQLQuery query = session.createSQLQuery(sqlStr.toString());
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
query.setParameter("p_code", "%" +
requestDto.getCampaignCode().toUpperCase()
......@@ -84,6 +126,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
.replaceAll("_", "\\\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) {
query.setParameter("p_name", "%" +
requestDto.getCampaignName().toUpperCase()
......@@ -92,6 +135,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
.replaceAll("_", "\\\\_")
+ "%");
}
if (requestDto.getStatus() != null) {
query.setParameter("p_status", requestDto.getStatus());
}
......@@ -114,26 +158,40 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
query.setParameter("p_chanel", requestDto.getChanel());
}
List<CampaignDTO> dataCount = query.getResultList();
long count = dataCount.size();
query.addScalar("campaignId", new LongType());
query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("campaignType", new StringType());
query.addScalar("chanel", new ShortType());
query.addScalar("startTime", new DateType());
query.addScalar("endTime", new DateType());
query.addScalar("customerNumber", new LongType());
query.addScalar("status", new ShortType());
query.setResultTransformer(Transformers.aliasToBean(CampaignDTO.class));
int count = 0;
List<CampaignDTO> list = query.list();
if (list.size() > 0) {
count = query.list().size();
}
Pageable pageable = buildPageable(requestDto);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<CampaignDTO> data = query.getResultList();
List<CampaignDTO> data = query.list();
Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count);
result.setData(dataPage);
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
session.close();
return result;
}catch (Exception ex) {
} catch (Exception ex) {
session.close();
}
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
return null;
return result;
}
private Pageable buildPageable(CampaignRequestDTO obj) {
......@@ -143,4 +201,9 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
pageable = new PageRequest(obj.getPage(), obj.getPageSize(), sort);
return pageable;
}
// private CampaignDTO mappingData(Object[] object) {
// CampaignDTO dto = new CampaignDTO();
//
// }
}
package com.viettel.campaign.service;
import com.viettel.campaign.dto.ResultDTO;
import com.viettel.campaign.dto.request_dto.CampaignRequestDTO;
import com.viettel.campaign.model.Campaign;
import org.springframework.data.domain.Page;
import com.viettel.campaign.web.dto.ResultDTO;
import java.util.Map;
......
package com.viettel.campaign.service;
package com.viettel.campaign.service.impl;
import com.viettel.campaign.service.ApParamService;
import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.mapper.ApParamMapper;
......
package com.viettel.campaign.service;
package com.viettel.campaign.service.impl;
import com.viettel.campaign.service.CampaignCompleteCodeService;
import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.mapper.CampaignCompleteCodeMapper;
......
package com.viettel.campaign.service.impl;
import com.viettel.campaign.repository.CampaignRepository;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.dto.CampaignDTO;
import com.viettel.campaign.dto.ResultDTO;
import com.viettel.campaign.dto.request_dto.CampaignRequestDTO;
import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.repository.CampaignRepository;
import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -23,18 +18,18 @@ import java.util.Map;
@Service
public class CampaignServiceImpl implements CampaignService {
@Autowired(required=true)
@Autowired
CampaignRepository campaignRepository;
@Override
public Map searchCampaignExecute(int page, int pageSize, String sort, String agentId) {
Map result = new HashMap();
List<CampaignDTO> lst = new ArrayList<>();
Pageable pageable = PageRequest.of(page, pageSize, Sort.by(sort));
lst = campaignRepository.searchCampaignExecute(agentId, pageable);
List<CampaignDTO> lst = campaignRepository.searchCampaignExecute(agentId, pageable);
List<CampaignDTO> count = campaignRepository.searchCampaignExecute(agentId, null);
result.put("totalItem", lst.size());
result.put("totalItem", count.size());
result.put("data", lst);
return result;
......
package com.viettel.campaign.service;
package com.viettel.campaign.service.impl;
import com.viettel.campaign.service.CustomerService;
import com.viettel.campaign.web.dto.CustomerDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.mapper.CustomerMapper;
......
package com.viettel.campaign.utils;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
/**
* @author anhvd_itsol
*/
public class HibernateUtil {
private static SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory()
{
try
{
if (sessionFactory == null)
{
Configuration configuration = new Configuration().configure(HibernateUtil.class.getResource("/hibernate.cfg.xml"));
StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
serviceRegistryBuilder.applySettings(configuration.getProperties());
ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
return sessionFactory;
} catch (Throwable ex)
{
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
public static void shutdown()
{
getSessionFactory().close();
}
}
......@@ -10,4 +10,7 @@ import java.io.Serializable;
public class BaseDTO implements Serializable {
protected String keySet;
protected int pageSize;
protected int page;
protected String sort;
}
package com.viettel.campaign.web.rest.controller;
import com.viettel.campaign.dto.ResultDTO;
import com.viettel.campaign.dto.request_dto.CampaignRequestDTO;
import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.web.dto.ResultDTO;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.data.domain.Page;
import java.util.Map;
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@10.60.157.135:1521:vt</property>
<property name="hibernate.connection.username">CCMS_FULL</property>
<property name="hibernate.connection.password">CCMS_FULL#123</property>
<property name="hibernate.connection.pool_size">64</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
</session-factory>
</hibernate-configuration>
SELECT
CAMPAIGN_ID campaignId,
CAMPAIGN_CODE campaignCode,
CAMPAIGN_NAME campaignName,
CAMPAIGN_TYPE campaignType,
......@@ -9,24 +10,3 @@ SELECT
STATUS status
FROM CAMPAIGN
WHERE 1 = 1
AND (:p_code IS NULL OR (:p_code IS NOT NULL AND UPPER(CAMPAIGN_CODE) LIKE :p_code ))
AND (:p_name IS NULL OR (:p_name IS NOT NULL AND UPPER(CAMPAIGN_NAME) LIKE :p_name ))
AND (:p_status IS NULL OR (:p_status IS NOT NULL AND STATUS = :status))
AND ((:p_frDateFr IS NULL AND :p_frDateTo IS NULL)
OR ((:p_frDateFr IS NOT NULL AND :p_frDateTo IS NOT NULL) AND
(trunc(START_TIME) BETWEEN TO_DATE(:p_frDateFr, 'YYYYMMDD') AND TO_DATE(:p_frDateTo, 'YYYYMMDD')))
OR ((:p_frDateFr IS NOT NULL AND :p_frDateTo IS NULL)
AND (trunc(START_TIME) >= TO_DATE(:p_frDateFr, 'YYYYMMDD')))
OR ((:p_frDateFr IS NULL AND :p_frDateTo IS NOT NULL)
AND (trunc(START_TIME) <= TO_DATE(:p_frDateTo, 'YYYYMMDD')))
)
AND ((:p_toDateFr IS NULL AND :p_toDateTo IS NULL)
OR ((:p_toDateFr IS NOT NULL AND :p_toDateTo IS NOT NULL) AND
(trunc(END_TIME) BETWEEN TO_DATE(:p_toDateFr, 'YYYYMMDD') AND TO_DATE(:p_toDateTo, 'YYYYMMDD')))
OR ((:p_toDateFr IS NOT NULL AND :p_toDateTo IS NULL)
AND (trunc(END_TIME) >= TO_DATE(:p_toDateFr, 'YYYYMMDD')))
OR ((:p_toDateFr IS NULL AND :p_toDateTo IS NOT NULL)
AND (trunc(END_TIME) <= TO_DATE(:p_toDateTo, 'YYYYMMDD')))
)
AND (:p_type IS NULL OR (:p_type IS NOT NULL AND CAMPAIGN_TYPE = :p_type))
AND (:p_chanel IS NULL OR (:p_chanel IS NOT NULl AND CHANEL = :p_chanel))
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