Commit 7239ffd0 authored by Tu Bach's avatar Tu Bach

Merge branch 'master' of https://git.myitsol.com/hanv/service-campaign

# Conflicts:
#	pom.xml
#	src/main/java/com/viettel/campaign/mapper/CampaignAgentMapper.java
#	src/main/java/com/viettel/campaign/repository/ccms_full/CampaignCompleteCodeRepository.java
#	src/main/java/com/viettel/campaign/service/CampaignExecuteService.java
#	src/main/java/com/viettel/campaign/service/impl/CampaignExecuteServiceImp.java
#	src/main/java/com/viettel/campaign/web/rest/CampaignController.java
parents e5991be9 bbf22ecf
......@@ -9,98 +9,48 @@
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.viettel</groupId>
<artifactId>campaign</artifactId>
<version>0.0.1-SNAPSHOT</version>
<artifactId>service-campaign</artifactId>
<version>1.0</version>
<name>service-campaign</name>
<description>Campaign service for Spring Boot</description>
<packaging>jar</packaging>
<description>Campaign service for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>-->
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
<!--<spring-cloud.version>Finchley.SR2</spring-cloud.version>-->
</properties>
<dependencies>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-activemq</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-integration</artifactId>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-mail</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-thymeleaf</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>com.viettel</groupId>
<artifactId>viettelsercurity</artifactId>
<version>11.2.0.3</version>
</dependency>
<!--<dependency>-->
<!--<groupId>org.apache.kafka</groupId>-->
<!--<artifactId>kafka-streams</artifactId>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>org.springframework.kafka</groupId>-->
<!--<artifactId>spring-kafka</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<!-- <scope>system</scope>-->
<!-- <systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>-->
<scope>system</scope>
<systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>
<version>1.0</version>
</dependency>
<dependency>
......@@ -114,20 +64,10 @@
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-configuration-processor</artifactId>-->
<!--<optional>true</optional>-->
<!--<artifactId>spring-boot-devtools</artifactId>-->
<!--<scope>runtime</scope>-->
<!--</dependency>-->
<dependency>
<groupId>org.projectlombok</groupId>
......@@ -139,26 +79,6 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.restdocs</groupId>
<artifactId>spring-restdocs-mockmvc</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
......@@ -233,17 +153,17 @@
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--<dependencyManagement>-->
<!--<dependencies>-->
<!--<dependency>-->
<!--<groupId>org.springframework.cloud</groupId>-->
<!--<artifactId>spring-cloud-dependencies</artifactId>-->
<!--<version>${spring-cloud.version}</version>-->
<!--<type>pom</type>-->
<!--<scope>import</scope>-->
<!--</dependency>-->
<!--</dependencies>-->
<!--</dependencyManagement>-->
<build>
<plugins>
......@@ -275,9 +195,9 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
<!--<configuration>-->
<!--<executable>true</executable>-->
<!--</configuration>-->
</plugin>
</plugins>
</build>
......
......@@ -6,10 +6,8 @@ import com.viettel.campaign.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication(scanBasePackages={"com.viettel.campaign"})
@ComponentScan({"com.viettel"})
@SpringBootApplication
public class ServiceCampaignApplication {
@Autowired
......
package com.viettel.campaign.config;
import com.viettel.campaign.filter.CorsFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/**
* @author hanv_itsol
* @project service-campaign
*/
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setName("CorsFilter");
CorsFilter corsFilter = new CorsFilter();
registrationBean.setFilter(corsFilter);
registrationBean.setOrder(1);
return registrationBean;
}
}
//package com.viettel.campaign.config;
//
//import com.viettel.campaign.filter.CorsFilter;
//import org.springframework.boot.web.servlet.FilterRegistrationBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//
///**
// * @author hanv_itsol
// * @project service-campaign
// */
//
//@EnableWebSecurity
//@Configuration
//public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//
// @Override
// protected void configure(HttpSecurity http) throws Exception {
// http.csrf().disable();
// }
//
// @Bean
// public FilterRegistrationBean filterRegistrationBean() {
// FilterRegistrationBean registrationBean = new FilterRegistrationBean();
// registrationBean.setName("CorsFilter");
// CorsFilter corsFilter = new CorsFilter();
// registrationBean.setFilter(corsFilter);
// registrationBean.setOrder(1);
// return registrationBean;
// }
//}
package com.viettel.campaign.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
/**
* @author hanv_itsol
* @project service-campaign
*/
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocket").setAllowedOrigins("*").withSockJS();
}
}
\ No newline at end of file
......@@ -31,27 +31,27 @@ public class CorsFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) req;
chain.doFilter(req, resp);
// if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
// chain.doFilter(req, resp);
// return;
// }
// if ("/".equals(request.getRequestURI())) {
// chain.doFilter(req, resp);
// return;
// }
// String xAuthToken = request.getHeader("X-Auth-Token");
// if (xAuthToken == null || "".equals(xAuthToken)) {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null.");
// return;
// }
// Object obj = RedisUtil.getInstance().get(xAuthToken);
// if (obj instanceof UserSession) {
// chain.doFilter(req, resp);
// } else {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
// }
// chain.doFilter(req, resp);
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
chain.doFilter(req, resp);
return;
}
if ("/".equals(request.getRequestURI())) {
chain.doFilter(req, resp);
return;
}
String xAuthToken = request.getHeader("X-Auth-Token");
if (xAuthToken == null || "".equals(xAuthToken)) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null.");
return;
}
Object obj = RedisUtil.getInstance().get(xAuthToken);
if (obj instanceof UserSession) {
chain.doFilter(req, resp);
} else {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
}
}
@Override
......
package com.viettel.campaign.mapper;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.CampaignAgentDTO;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
public class CampaignAgentsMapper extends BaseMapper<CampaignAgent, CampaignAgentsDTO> {
public class CampaignAgentMapper extends BaseMapper<CampaignAgent, CampaignAgentDTO> {
@Autowired
ModelMapper modelMapper;
@Override
public CampaignAgentsDTO toDtoBean(CampaignAgent campaignAgent) {
return modelMapper.map(campaignAgent, CampaignAgentsDTO.class);
public CampaignAgentDTO toDtoBean(CampaignAgent campaignAgent) {
return modelMapper.map(campaignAgent, CampaignAgentDTO.class);
}
@Override
public CampaignAgent toPersistenceBean(CampaignAgentsDTO dtoBean) {
public CampaignAgent toPersistenceBean(CampaignAgentDTO dtoBean) {
return modelMapper.map(dtoBean, CampaignAgent.class);
}
}
package com.viettel.campaign.mapper;
import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO;
import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
import com.viettel.campaign.web.dto.CampaignCfgDTO;
import com.viettel.campaign.model.ccms_full.CampaignCfg;
public class CampaignCompleteCodeMapper extends BaseMapper<CampaignCompleteCode, CampaignCompleteCodeDTO> {
public class CampaignCompleteCodeMapper extends BaseMapper<CampaignCfg, CampaignCfgDTO> {
@Override
public CampaignCompleteCodeDTO toDtoBean(CampaignCompleteCode entity) {
CampaignCompleteCodeDTO dto = new CampaignCompleteCodeDTO();
public CampaignCfgDTO toDtoBean(CampaignCfg entity) {
CampaignCfgDTO dto = new CampaignCfgDTO();
if (entity != null) {
dto.setCampaignCompleteCodeId(entity.getCampaignCompleteCodeId());
......@@ -34,8 +34,8 @@ public class CampaignCompleteCodeMapper extends BaseMapper<CampaignCompleteCode,
}
@Override
public CampaignCompleteCode toPersistenceBean(CampaignCompleteCodeDTO dtoBean) {
CampaignCompleteCode entity = new CampaignCompleteCode();
public CampaignCfg toPersistenceBean(CampaignCfgDTO dtoBean) {
CampaignCfg entity = new CampaignCfg();
if (dtoBean != null) {
entity.setCampaignCompleteCodeId(dtoBean.getCampaignCompleteCodeId());
......
package com.viettel.campaign.mapper;
import com.viettel.campaign.model.ccms_full.ReceiveCustLog;
import com.viettel.campaign.web.dto.ReceiveCustLogDTO;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
public class ReceiveCustLogMapper extends BaseMapper<ReceiveCustLog, ReceiveCustLogDTO> {
@Autowired
ModelMapper modelMapper;
@Override
public ReceiveCustLogDTO toDtoBean(ReceiveCustLog receiveCustLog) {
return modelMapper.map(receiveCustLog, ReceiveCustLogDTO.class);
}
@Override
public ReceiveCustLog toPersistenceBean(ReceiveCustLogDTO dtoBean) {
return modelMapper.map(dtoBean, ReceiveCustLog.class);
}
}
......@@ -11,7 +11,7 @@ import java.util.Date;
@Table(name = "CAMPAIGN_COMPLETE_CODE")
@Getter
@Setter
public class CampaignCompleteCode implements Serializable {
public class CampaignCfg implements Serializable {
@Id
@GeneratedValue(generator = "CAMPAIGN_COMPLETE_CODE_SEQ")
......
package com.viettel.campaign.model.ccms_full;
public class CustomizeField {
}
......@@ -4,6 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
......@@ -16,19 +17,22 @@ public class ReceiveCustLog implements Serializable {
@GeneratedValue(generator = "RECEIVE_CUST_LOG_SEQ")
@SequenceGenerator(name = "RECEIVE_CUST_LOG_SEQ", sequenceName = "RECEIVE_CUST_LOG_SEQ", allocationSize = 1)
@Basic(optional = false)
@NotNull
@Column(name = "RECEIVE_CUST_LOG_ID")
private Long receiveCustLogId;
@Column(name = "COMPANY_SITE_ID")
private Long companySiteId;
@Column(name = "CUSTOMER_ID")
@NotNull
private Long customerId;
@Column(name = "START_TIME")
@Temporal(TemporalType.TIMESTAMP)
@NotNull
private Date startTime;
@Column(name = "AGENT_ID")
private Long agentId;
@Column(name = "CAMPAIGN_ID")
private Long campaignId;
@Column(name = "START_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;
@Column(name = "END_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date endTime;
......
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.ApParam;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
......@@ -8,12 +7,10 @@ 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 org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository
@Transactional(DataSourceQualify.CCMS_FULL)
public interface ApParamRepository extends JpaRepository<ApParam, Long>, ApParamRepositoryCustom {
Page<ApParam> findAll(Pageable pageable);
......
......@@ -9,6 +9,8 @@ import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository
@Transactional(DataSourceQualify.CCMS_FULL)
public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Long> {
......@@ -19,4 +21,8 @@ public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Lo
@Modifying
@Query("UPDATE CampaignAgent SET status = :status WHERE agentId = :agentId AND campaignId = :campaignId")
void updateCampaignAgentSetStatus(@Param("agentId") Long agentId, @Param("campaignId") Long campaignId, @Param("status") Integer status);
@Modifying
@Query("delete from CampaignAgent c where c.campaignAgentId in (:p_campaign_agent_id)")
int deleteCampaignAgent(@Param("p_campaign_agent_id") List<Long> campaignAgentId);
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CampaignAgentsRepository extends JpaRepository<CampaignAgent, Long> {
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.CampaignCfg;
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.Modifying;
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 CampaignCfgRepository extends JpaRepository<CampaignCfg, Long>{
@Query(" select u FROM CampaignCfg u WHERE u.status = 1")
Page<CampaignCfg> findAll(Pageable pageable);
@Query("FROM CampaignCfg WHERE completeName LIKE concat('%', :name, '%') ")
List<CampaignCfg> findByName(@Param("name") String name, Pageable pageable);
List<CampaignCfg> findByCompleteNameContains(String name, Pageable pageable);
@Modifying
@Query("update CampaignCfg c set c.status = 0 where c.campaignCompleteCodeId in (:p_ids) and c.companySiteId=:p_company_site_id" )
int deletedList(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id);
List<CampaignCfg> findCampaignCompleteCodesByCompanySiteId(Long companySiteId);
@Query(value="SELECT max(completeValue) FROM CampaignCfg WHERE companySiteId = :companySiteId GROUP BY companySiteId")
Short findByMaxCompanySiteId(Long companySiteId);
@Modifying
@Query("update CampaignCfg c set c.status = 0 where c.campaignCompleteCodeId=:p_campaignCompleteCode_list_id and c.companySiteId=:p_company_site_id")
int deleteCampaignCompleteCodeBy(@Param("p_campaignCompleteCode_list_id") Long p_campaignCompleteCode_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Query(value = "FROM CampaignCfg WHERE status = 1 AND completeValue = :completeValue AND completeType = :completeType AND companySiteId = :companySiteId")
List<CampaignCfg> getCustomerStatus(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId);
@Query(value = "FROM CampaignCfg WHERE status = 1 AND completeValue <> :completeValue AND completeType = :completeType AND companySiteId = :companySiteId")
List<CampaignCfg> getCustomerStatusWithoutValue(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId);
@Query("select c from CampaignCfg c where c.companySiteId =:p_company_site_id")
List<CampaignCfg> findAllCampaignCompleteCode();
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.CampaignCfg;
public interface CampaignCfgRepositoryCustom {
CampaignCfg updateStatusById(Long id);
CampaignCfg findMaxValueCampaignType(Long companySiteId);
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
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.Modifying;
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>{
@Query(" select u FROM CampaignCompleteCode u WHERE u.status = 1")
Page<CampaignCompleteCode> findAll(Pageable pageable);
@Query("FROM CampaignCompleteCode WHERE completeName LIKE concat('%', :name, '%') ")
List<CampaignCompleteCode> findByName(@Param("name") String name, Pageable pageable);
List<CampaignCompleteCode> findByCompleteNameContains(String name, Pageable pageable);
@Modifying
@Query("update CampaignCompleteCode c set c.status = 0 where c.campaignCompleteCodeId in (:p_ids) and c.companySiteId=:p_company_site_id" )
int deletedList(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id);
List<CampaignCompleteCode> findCampaignCompleteCodesByCompanySiteId(Long companySiteId);
@Query(value="SELECT max(completeValue) FROM CampaignCompleteCode WHERE companySiteId = :companySiteId GROUP BY companySiteId")
Short findByMaxCompanySiteId(Long companySiteId);
@Modifying
@Query("update CampaignCompleteCode c set c.status = 0 where c.campaignCompleteCodeId=:p_campaignCompleteCode_list_id and c.companySiteId=:p_company_site_id")
int deleteCampaignCompleteCodeBy(@Param("p_campaignCompleteCode_list_id") Long p_campaignCompleteCode_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Query(value = "FROM CampaignCompleteCode WHERE status = 1 AND completeValue = :completeValue AND completeType = :completeType AND companySiteId = :companySiteId")
List<CampaignCompleteCode> getCustomerStatus(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId);
@Query(value = "FROM CampaignCompleteCode WHERE status = 1 AND completeValue <> :completeValue AND completeType = :completeType AND companySiteId = :companySiteId")
List<CampaignCompleteCode> getCustomerStatusWithoutValue(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId);
@Query("select c from CampaignCompleteCode c where c.companySiteId =:p_company_site_id")
List<CampaignCompleteCode> findAllCampaignCompleteCode();
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
public interface CampaignCompleteCodeRepositoryCustom {
CampaignCompleteCode updateStatusById(Long id);
CampaignCompleteCode findMaxValueCampaignType(Long companySiteId);
}
......@@ -5,31 +5,32 @@ import com.viettel.campaign.model.ccms_full.CampaignCustomer;
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 org.springframework.transaction.annotation.Transactional;
@Repository
import java.util.List;
@Transactional(DataSourceQualify.CCMS_FULL)
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(*) " +
"FROM CAMPAIGN_CUSTOMER CC JOIN CAMPAIGN_COMPLETE_CODE CCC ON CC.CAMPAIGN_ID = CCC.CAMPAIGN_ID " +
"WHERE CC.CAMPAIGN_ID = :campaignId " +
"AND CC.CUSTOMER_ID = :customerId " +
"AND CC.STATUS = 3 " +
"AND CCC.IS_RECALL = 1 " +
"AND CCC.STATUS = 1 ", nativeQuery = true)
"WHERE CC.STATUS = 3 AND CC.CAMPAIGN_ID = :campaignId AND CC.CUSTOMER_ID = :customerId AND CCC.IS_RECALL = 1 AND CCC.STATUS = 1 ",
nativeQuery = true)
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);
}
......@@ -18,6 +18,16 @@ public interface CampaignRepository extends JpaRepository<Campaign, Long> {
List<Campaign> findCampaignByCompanySiteIdAndEndTimeIsLessThanEqualAndStatusIn(Long siteId, Date endTime, List<Long> status);
@Query("SELECT COUNT(c.campaignId) " +
" FROM Campaign c JOIN CampaignCustomer cc ON c.campaignId = cc.campaignId " +
" WHERE cc.companySiteId = :pCompanySiteId " +
" AND cc.status = 1 " +
" AND cc.recallTime <= sysdate " +
" AND cc.agentId = :pAgentId")
Long countRecallCustomer(@Param("pCompanySiteId") Long pCompanySiteId, @Param("pAgentId") Long pAgentId);
Campaign findByCampaignId(Long campaignId);
Campaign findCampaignByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
......
......@@ -4,5 +4,4 @@ import com.viettel.campaign.model.ccms_full.ReceiveCustLog;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ReceiveCustLogRepository extends JpaRepository<ReceiveCustLog, Long> {
}
......@@ -2,12 +2,8 @@ package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.ScenarioAnswer;
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;
/**
* @author anhvd_itsol
*/
......@@ -15,13 +11,4 @@ import java.util.List;
@Repository
public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer, Long> {
List<ScenarioAnswer> findByScenarioQuestionIdAndCompanySiteIdAndStatus(Long scenarioQuestionId, Long companySiteId, Short status);
@Query(value="SELECT MAX(orderIndex) FROM ScenarioAnswer WHERE scenarioQuestionId = :scenarioQuestionId AND companySiteId = :companySiteId AND status = 1")
Long getMaxAnswerOrderId(@Param("scenarioQuestionId") Long scenarioQuestionId, @Param("companySiteId") Long companySiteId);
Integer deleteScenarioAnswersByScenarioQuestionId(Long scenarioQuestionId);
ScenarioAnswer findScenarioAnswerByScenarioAnswerId(Long scenarioAnswerId);
}
......@@ -14,13 +14,11 @@ import java.util.List;
@Repository
public interface ScenarioQuestionRepository extends JpaRepository<ScenarioQuestion, Long> {
List<ScenarioQuestion> findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatusOrderByOrderIndex(Long scenarioId, Long campaignId, Long companySiteId, Short status);
List<ScenarioQuestion> findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatus(Long scenarioId, Long campaignId, Long companySiteId, Short status);
@Query(value="SELECT MAX(orderIndex) FROM ScenarioQuestion WHERE scenarioId = :scenarioId AND campaignId = :campaignId AND companySiteId = :companySiteId AND status = 1")
Long getMaxOrderId(@Param("scenarioId") Long scenarioId, @Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
@Query(value = "SELECT COUNT(1) FROM ScenarioQuestion WHERE code = :code AND scenarioId = :scenarioId AND campaignId = :campaignId AND companySiteId = :companySiteId AND status = 1")
Integer countDuplicateQuestionCode(@Param("code") String code, @Param("scenarioId") Long scenarioId, @Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
ScenarioQuestion findScenarioQuestionByScenarioQuestionId(Long scenarioQuestionId);
}
package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
import com.viettel.campaign.repository.ccms_full.CampaignCompleteCodeRepositoryCustom;
import com.viettel.campaign.model.ccms_full.CampaignCfg;
import com.viettel.campaign.repository.ccms_full.CampaignCfgRepositoryCustom;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -12,20 +12,20 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Repository
public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompleteCodeRepositoryCustom {
public class CampaignCfgRepositoryIpml implements CampaignCfgRepositoryCustom {
@Autowired
@PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
private EntityManager entityManager;
private Logger log = LoggerFactory.getLogger(CampaignCompleteCompleteCodeRepositoryIpml.class);
private Logger log = LoggerFactory.getLogger(CampaignCfgRepositoryIpml.class);
@Override
// @Transactional(DataSourceQualify.CCMS_FULL)
public CampaignCompleteCode updateStatusById(Long id) {
CampaignCompleteCode dto = new CampaignCompleteCode();
public CampaignCfg updateStatusById(Long id) {
CampaignCfg dto = new CampaignCfg();
try {
CampaignCompleteCode e = entityManager.find(CampaignCompleteCode.class, id);
CampaignCfg e = entityManager.find(CampaignCfg.class, id);
e.setStatus(new Short("0")); // set status = 0 --> khong hoat dong
entityManager.merge(e);
} catch (Exception e) {
......@@ -36,8 +36,8 @@ public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompl
@Override
// @Transactional(DataSourceQualify.CCMS_FULL)
public CampaignCompleteCode findMaxValueCampaignType(Long companySiteId) {
CampaignCompleteCode result = new CampaignCompleteCode();
public CampaignCfg findMaxValueCampaignType(Long companySiteId) {
CampaignCfg result = new CampaignCfg();
try {
} catch (Exception e) {
......
package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.CampaignAgentDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignAgentRequestDTO;
import java.util.List;
public interface AgentsService {
ResultDTO getAgentsByAgentId(String agentId);
ResultDTO getAllAgentsByCompanySiteId(int page, int pageSize, Long companySiteId);
ResultDTO getAllAgentByCompanySiteId(int page, int pageSize, Long companySiteId);
ResultDTO getAllAgentSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId);
ResultDTO createCampaignAgent(CampaignAgentDTO campaignAgentDTO);
ResultDTO deleteCampaignAgentById(List<Long> campaignAgentId);
ResultDTO getAllAgentsSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId);
ResultDTO searchCampaignAgentByName(int page, int pageSize, Long companySiteId, String userName, String fullName);
ResultDTO createCampaignAgents(CampaignAgentsDTO campaignAgentsDTO);
ResultDTO createMultipleCampaignAgent(CampaignAgentRequestDTO campaignAgentRequestDTO);
}
......@@ -16,7 +16,7 @@ public interface ApParamService {
ResultDTO findParamByParType(String parType);
List<ApParam>findAllParam(String parType);
List<ApParam>findAllParam();
}
package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO;
import com.viettel.campaign.web.dto.CampaignCfgDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignCompleteCodeRequestDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignCfgRequestDTO;
import java.util.List;
import java.util.Map;
public interface CampaignCompleteCodeService {
public interface CampaignCfgService {
ResultDTO listAllCompleteCode(int page, int pageSize, String sort,Long companySiteId);
Map listCompleteCodeByName(int page, int pageSize, String sort, String name);
ResultDTO createCompleteCode(CampaignCompleteCodeDTO completeCodeDTO);
ResultDTO createCompleteCode(CampaignCfgDTO completeCodeDTO);
ResultDTO updateCompleteCode(CampaignCompleteCodeDTO completeCodeDTO);
ResultDTO updateCompleteCode(CampaignCfgDTO completeCodeDTO);
ResultDTO deleteCompleteCode(CampaignCompleteCodeRequestDTO completeCodeDTO);
ResultDTO deleteCompleteCode(CampaignCfgRequestDTO completeCodeDTO);
ResultDTO deleteList(CampaignCompleteCodeRequestDTO campaignCompleteCodeRequestDTO);
ResultDTO deleteList(CampaignCfgRequestDTO campaignCfgRequestDTO);
ResultDTO deleteById(Long id);
ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO);
ResultDTO findMaxValueCampaignCompleteCode(CampaignCfgDTO completeCodeDTO);
ResultDTO getListStatus(String completeValue, Short completeType, Long companySiteId);
......
......@@ -35,4 +35,5 @@ public interface CampaignExecuteService {
ResultDTO getAgentLogout(CampaignRequestDTO dto);
ResultDTO callCustomer(ContactCustResultDTO dto);
}
......@@ -30,9 +30,7 @@ public interface CampaignService {
ResultDTO addNewCampaign(CampaignDTO campaignDTO);
ResultDTO countRecallCustomer(Long companySiteId, Long agentId);
ResultDTO getCustomerRecall(Long campaignId, Long customerId);
Map countRecallCustomer(Long companySiteId, Long agentId);
ResultDTO findCampaignById(Long campaignId);
......
......@@ -26,6 +26,8 @@ public interface CustomerService {
ResultDTO deleteIds(CustomerRequestDTO customerRequestDTO);
ResultDTO getCustomerDetailById(Long companySiteId, Long customerListId, Long customerId);
// ------------ customer list ------------ //
ResultDTO getAllCustomerList(int page, int pageSize, String sort, Long companySiteId);
......
package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
/**
* @author anhvd_itsol
*/
public interface ScenarioAnswerService {
ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId);
Long getMaxAnswerOrderId(Long scenarioQuestionId, Long companySiteId);
ResultDTO delete(ScenarioAnswerDTO scenarioAnswerDTO);
}
......@@ -15,6 +15,4 @@ public interface ScenarioQuestionService {
Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId);
Integer countDuplicateQuestionCode(String code, Long scenarioId, Long campaignId, Long companySiteId);
ResultDTO delete(ScenarioQuestionDTO scenarioQuestionDTO);
}
......@@ -90,7 +90,10 @@ public class ApParamServiceImpl implements ApParamService {
return resultDTO;
}
public List<ApParam> findAllParam(String parType) {
return apParamRepository.findAllParam(parType);
@Override
public List<ApParam> findAllParam() {
return apParamRepository.findAllParam("CAMPAIGN_TYPE") ;
}
}
package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.mapper.ReceiveCustLogMapper;
import com.viettel.campaign.model.acd_full.Agents;
import com.viettel.campaign.model.ccms_full.CampaignCustomer;
import com.viettel.campaign.model.ccms_full.ContactCustResult;
import com.viettel.campaign.model.ccms_full.ReceiveCustLog;
import com.viettel.campaign.repository.acd_full.AgentsRepository;
import com.viettel.campaign.repository.ccms_full.*;
import com.viettel.campaign.service.CampaignExecuteService;
......@@ -25,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -444,16 +442,15 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
public ResultDTO getCallLog(ReceiveCustLogDTO dto) {
ResultDTO result = new ResultDTO();
ReceiveCustLog receiveCustLog = (new ReceiveCustLogMapper()).toPersistenceBean(dto);
try {
custLogRepository.save(receiveCustLog);
agentsRepository.updateAgentLogoutFromCampaign(dto.getAgentId(), "NOT AVAILABLE");
List<CampaignCustomer> lst = null;//campaignCustomerRepository.getCustomerRecallDate(dto.getCampaignId(), dto.getAgentId(), dto.getCompanySiteId(), );
if (lst != null) {
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
e.printStackTrace();
//result.setTotalRow(count);
//result.setListData(campaignExecuteRepository.searchCampaignExecute(requestDto, SQLBuilder.buildPageable(requestDto)));
//result.setData(data);
} else {
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
}
......
......@@ -15,6 +15,7 @@ import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.WorkBookBuilder;
import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import oracle.jdbc.driver.Const;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.*;
......@@ -42,9 +43,6 @@ public class CampaignServiceImpl implements CampaignService {
@Autowired
CampaignRepository campaignRepository;
@Autowired
CampaignCustomerRepository campaignCustomerRepository;
@Autowired
CampaignRepositoryCustom campaignRepositoryCustom;
......@@ -165,37 +163,23 @@ public class CampaignServiceImpl implements CampaignService {
}
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO countRecallCustomer(Long companySiteId, Long agentId) {
Long count = campaignCustomerRepository.countRecallCustomer(companySiteId, agentId);
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);
resultDTO.setData(count);
result.put("info", resultDTO);
result.put("result", count);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
resultDTO.setData(0);
result.put("info", resultDTO);
result.put("result", 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;
return result;
}
@Override
......
package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.Campaign;
import com.viettel.campaign.model.ccms_full.CampaignLog;
import com.viettel.campaign.model.ccms_full.ScenarioAnswer;
import com.viettel.campaign.repository.ccms_full.CampaignLogRepository;
import com.viettel.campaign.repository.ccms_full.CampaignRepository;
import com.viettel.campaign.repository.ccms_full.ScenarioAnswerRepository;
import com.viettel.campaign.service.ScenarioAnswerService;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* @author anhvd_itsol
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ScenarioAnswerServiceImpl implements ScenarioAnswerService {
private static final Logger logger = LogManager.getLogger(ScenarioQuestionServiceImpl.class);
@Autowired
ScenarioAnswerRepository scenarioAnswerRepository;
@Autowired
CampaignRepository campaignRepository;
@Autowired
CampaignLogRepository campaignLogRepository;
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO();
try {
List<ScenarioAnswer> lst = scenarioAnswerRepository.findByScenarioQuestionIdAndCompanySiteIdAndStatus(scenarioQuestionId, companySiteId, (short) 1);
resultDTO.setData(lst);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch(Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public Long getMaxAnswerOrderId(Long scenarioQuestionId, Long companySiteId) {
try {
return scenarioAnswerRepository.getMaxAnswerOrderId(scenarioQuestionId, companySiteId);
}catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return null;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO delete(ScenarioAnswerDTO scenarioAnswerDTO) {
ResultDTO resultDTO = new ResultDTO();
CampaignLog campaignLog;
try {
//find campaign
Campaign campaign = campaignRepository.findByCampaignId(scenarioAnswerDTO.getCampaignId());
if(campaign != null) {
if (campaign.getStatus() == 0L || campaign.getStatus() == 1L) {
scenarioAnswerRepository.deleteById(scenarioAnswerDTO.scenarioAnswerId);
campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(scenarioAnswerDTO.getCompanySiteId());
campaignLog.setCreateTime(new Date());
campaignLog.setAgentId(null);
campaignLog.setTableName("SCENARIO_ANSWER");
campaignLog.setDescription("Xoa cau tra loi");
campaignLog.setCampaignId(scenarioAnswerDTO.getCampaignId());
campaignLog.setCustomerId(scenarioAnswerDTO.getScenarioAnswerId());
campaignLogRepository.save(campaignLog);
}
else {
ScenarioAnswer answer = scenarioAnswerRepository.findScenarioAnswerByScenarioAnswerId(scenarioAnswerDTO.getScenarioAnswerId());
answer.setStatus((short) 0);
answer.setDeleteTime(new Date());
scenarioAnswerRepository.save(answer);
campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(scenarioAnswerDTO.getCompanySiteId());
campaignLog.setCreateTime(new Date());
campaignLog.setAgentId(null);
campaignLog.setTableName("SCENARIO_ANSWER");
campaignLog.setDescription("Chinh sua tra loi");
campaignLog.setCampaignId(scenarioAnswerDTO.getCampaignId());
campaignLog.setCustomerId(scenarioAnswerDTO.getScenarioAnswerId());
campaignLogRepository.save(campaignLog);
}
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
}
package com.viettel.campaign.utils;
import com.viettel.security.PassTranformer;
//import com.viettel.security.PassTranformer;
import org.apache.log4j.Logger;
import java.io.File;
......@@ -60,7 +60,7 @@ public class Config {
} catch (IOException ex) {
Logger.getLogger(Config.class.getName()).error(ex.getMessage(), ex);
}
PassTranformer.setInputKey("Ipcc#987654321#@!");
// PassTranformer.setInputKey("Ipcc#987654321#@!");
// rabbitConnection = properties.getProperty("rabbit_connection_string");
// fbGatewayUser = PassTranformer.decrypt(properties.getProperty("rabbit_user", "").trim());
......
......@@ -5,7 +5,7 @@ import lombok.Setter;
@Getter
@Setter
public class CampaignAgentsDTO extends BaseDTO {
public class CampaignAgentDTO extends BaseDTO {
Long campaignAgentId;
Long campaignId;
Long agentId;
......
......@@ -7,7 +7,7 @@ import java.util.Date;
@Getter
@Setter
public class CampaignCompleteCodeDTO extends BaseDTO {
public class CampaignCfgDTO extends BaseDTO {
private Long campaignCompleteCodeId;
private Long campaignId;
......
......@@ -3,8 +3,6 @@ package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class CustomerCustomDTO {
......@@ -23,8 +21,4 @@ public class CustomerCustomDTO {
String ipccStatus;
String mobileNumber;
String email;
String connectStatus;
String connectTime;
String customerName;
Long campaignCustomerId;
}
......@@ -7,12 +7,12 @@ import java.util.Date;
@Getter
@Setter
public class ReceiveCustLogDTO extends BaseDTO {
public class ReceiveCustLogDTO {
private Long receiveCustLogId;
private Long companySiteId;
private Long customerId;
private Date startTime;
private Long agentId;
private Long campaignId;
private Date startTime;
private Date endTime;
}
......@@ -3,7 +3,6 @@ package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
/**
......@@ -12,7 +11,7 @@ import java.util.Date;
@Getter
@Setter
public class ScenarioAnswerDTO implements Serializable {
public class ScenarioAnswerDTO {
public Long scenarioAnswerId;
public Long companySiteId;
public Long scenarioQuestionId;
......@@ -24,5 +23,4 @@ public class ScenarioAnswerDTO implements Serializable {
public Date createTime;
public Date deleteTime;
public Long mappingQuestionId;
public Long campaignId;
}
......@@ -3,9 +3,7 @@ package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author anhvd_itsol
......@@ -13,7 +11,7 @@ import java.util.List;
@Getter
@Setter
public class ScenarioQuestionDTO implements Serializable {
public class ScenarioQuestionDTO {
private Long scenarioQuestionId;
private Long companySiteId;
private Long campaignId;
......@@ -28,5 +26,4 @@ public class ScenarioQuestionDTO implements Serializable {
private Short isRequire;
private Short isDefault;
private Short answerIndex;
private List<ScenarioAnswerDTO> lstAnswers;
}
......@@ -12,26 +12,27 @@ public class VSAUsersDTO {
String userName;
Short status;
String fullName;
Long userTypeId;
Date createDate;
String description;
String staffCode;
Long managerId;
Long locationId;
Long deptId;
String deptLevel;
Long posId;
String deptName;
Long groupId;
Long siteId;
// Long userTypeId;
// Date createDate;
// String description;
// String staffCode;
// Long managerId;
// Long locationId;
// Long deptId;
// String deptLevel;
// Long posId;
// String deptName;
// Long groupId;
// Long siteId;
Long companySiteId;
Short agentType;
String mobileNumber;
String facebookId;
Short loginType;
String googleId;
String email;
Long availableTicket;
String userKazooId;
// Short agentType;
// String mobileNumber;
// String facebookId;
// Short loginType;
// String googleId;
// String email;
// Long availableTicket;
// String userKazooId;
Short filterType;
Long campaignAgentId;
}
package com.viettel.campaign.web.dto.request_dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class CampaignAgentRequestDTO {
Long companySiteId;
Long campaignId;
List<Long> agentId;
}
......@@ -6,7 +6,7 @@ import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class CampaignCompleteCodeRequestDTO {
public class CampaignCfgRequestDTO {
List<Long> listId;
Long companySiteId;
Long campaignCompleteCodeID;
......
package com.viettel.campaign.web.dto.request_dto;
import com.viettel.campaign.web.dto.BaseDTO;
import com.viettel.campaign.web.dto.CustomerCustomDTO;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @author anhvd_itsol
*/
......@@ -45,5 +42,4 @@ public class CampaignRequestDTO extends BaseDTO {
String surveyStatus;
String roleUser;
String contactCustId;
List<CustomerCustomDTO> customerCustomDTOList;
}
package com.viettel.campaign.web.dto.request_dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class CustomerDetailRequestDTO {
Long companySiteId;
Long customerListId;
Long customerId;
String title;
String type;
String valueCombobox;
Short valueCheckbox;
Date valueDate;
Long valueNumber;
String valueText;
}
package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.AgentsService;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.CampaignAgentDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignAgentRequestDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -11,10 +12,11 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
@RequestMapping("/ipcc/agents")
@CrossOrigin
@CrossOrigin(origins = "*")
public class AgentsController {
private static final Logger logger = LoggerFactory.getLogger(CampaignController.class);
......@@ -31,23 +33,46 @@ public class AgentsController {
@GetMapping("/findAll")
@ResponseBody
public ResponseEntity<ResultDTO> listAgentsByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId) {
ResultDTO result = agentsService.getAllAgentsByCompanySiteId(page, pageSize, companySiteId);
public ResponseEntity<ResultDTO> listAgentByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId) {
ResultDTO result = agentsService.getAllAgentByCompanySiteId(page, pageSize, companySiteId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@GetMapping("/findAllSelected")
@ResponseBody
public ResponseEntity<ResultDTO> listAgentsSelectedByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = agentsService.getAllAgentsSelectedByCompanySiteId(page, pageSize, companySiteId, campaignId);
public ResponseEntity<ResultDTO> listAgentSelectedByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = agentsService.getAllAgentSelectedByCompanySiteId(page, pageSize, companySiteId, campaignId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/createCampaignAgents")
@PostMapping("/createCampaignAgent")
@ResponseBody
public ResultDTO createCustomerList(@RequestBody @Valid CampaignAgentsDTO campaignAgentsDTO) {
public ResultDTO createCampaignAgent(@RequestBody @Valid CampaignAgentDTO campaignAgentDTO) {
ResultDTO result = new ResultDTO();
result = agentsService.createCampaignAgents(campaignAgentsDTO);
result = agentsService.createCampaignAgent(campaignAgentDTO);
return result;
}
@PostMapping("/deleteCampaignAgent")
@ResponseBody
public ResultDTO deleteCampaignAgentById(@RequestBody @Valid List<Long> campaignAgentId) {
ResultDTO result = new ResultDTO();
result = agentsService.deleteCampaignAgentById(campaignAgentId);
return result;
}
@GetMapping("/searchCampaignAgent")
@ResponseBody
public ResponseEntity<ResultDTO> searchCampaignAgent(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("userName") String userName, @RequestParam("fullName") String fullName) {
ResultDTO result = agentsService.searchCampaignAgentByName(page, pageSize, companySiteId, userName, fullName);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/createMultipleCampaignAgent")
@ResponseBody
public ResultDTO createMultipleCampaignAgent(@RequestBody @Valid CampaignAgentRequestDTO campaignAgentRequestDTO) {
ResultDTO result = new ResultDTO();
result = agentsService.createMultipleCampaignAgent(campaignAgentRequestDTO);
return result;
}
}
......@@ -21,8 +21,6 @@ public class ApParamController {
private static final String CONNECT_STATUS = "CONNECT_STATUS";
private static final String CONNECT_STATUS_TYPE = "1";
private static final String CONNECT_STATUS_RE = "CONNECT_STATUS_RE";
private static final String CONNECT_STATUS_TYPE_RE = "3";
private static final String SURVEY_STATUS = "SURVEY_STATUS";
private static final String SURVEY_STATUS_TYPE = "2";
private static final String CAMPAIGN_TYPE = "CAMPAIGN_TYPE";
......@@ -58,10 +56,10 @@ public class ApParamController {
return new ResponseEntity<>(apParamService.findParamByParType(parType), HttpStatus.OK);
}
@GetMapping(path = "/findAllParam")
@GetMapping(path ="/findAllParam")
@ResponseBody
public ResponseEntity findAllParam(@RequestParam("parType") String parType) {
List<ApParam> findAll = apParamService.findAllParam(parType);
public ResponseEntity findAllParam() {
List<ApParam> findAll = apParamService.findAllParam();
if(findAll.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
......@@ -76,8 +74,6 @@ public class ApParamController {
return new ResponseEntity<>(campaignExecuteService.getComboBoxStatus(companySiteId, CONNECT_STATUS_TYPE), HttpStatus.OK);
} else if (SURVEY_STATUS.equals(parType)){
return new ResponseEntity<>(campaignExecuteService.getComboBoxStatus(companySiteId, SURVEY_STATUS_TYPE), HttpStatus.OK);
} else if (CONNECT_STATUS_RE.equals(parType)) {
return new ResponseEntity<>(campaignExecuteService.getComboBoxStatus(companySiteId, CONNECT_STATUS_TYPE_RE), HttpStatus.OK);
} else {
return new ResponseEntity<>(campaignExecuteService.getComboCampaignType(companySiteId), HttpStatus.OK);
}
......
package com.viettel.campaign.web.rest;
import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO;
import com.viettel.campaign.web.dto.CampaignCfgDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.service.CampaignCompleteCodeService;
import com.viettel.campaign.web.dto.request_dto.CampaignCompleteCodeRequestDTO;
import com.viettel.campaign.service.CampaignCfgService;
import com.viettel.campaign.web.dto.request_dto.CampaignCfgRequestDTO;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
......@@ -11,17 +11,16 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/ipcc/completeCode")
@CrossOrigin(origins = "*")
public class CampaignCompleteCodeController {
public class CampaignCfg {
private static final Logger LOGGER = Logger.getLogger(CustomerController.class);
@Autowired
CampaignCompleteCodeService completeCodeService;
CampaignCfgService completeCodeService;
@GetMapping("/findAll")
@ResponseBody
......@@ -39,7 +38,7 @@ public class CampaignCompleteCodeController {
@PostMapping("/create")
@ResponseBody
public ResultDTO createCompleteCode(@RequestBody @Valid CampaignCompleteCodeDTO completeCodeDTO) {
public ResultDTO createCompleteCode(@RequestBody @Valid CampaignCfgDTO completeCodeDTO) {
ResultDTO result = new ResultDTO();
//LogUtil logUtil = new LogUtil();
//logUtil.initKpiLog("createCust")
......@@ -58,7 +57,7 @@ public class CampaignCompleteCodeController {
@PostMapping("/update")
@ResponseBody
public ResultDTO updateCompleteCode(@RequestBody @Valid CampaignCompleteCodeDTO completeCodeDTO
public ResultDTO updateCompleteCode(@RequestBody @Valid CampaignCfgDTO completeCodeDTO
) {
ResultDTO result = new ResultDTO();
try {
......@@ -86,16 +85,16 @@ public class CampaignCompleteCodeController {
@PostMapping("/delete")
@ResponseBody
public ResultDTO deleteCompleteCode(@RequestBody @Valid CampaignCompleteCodeRequestDTO campaignCompleteCodeRequestDTO) {
public ResultDTO deleteCompleteCode(@RequestBody @Valid CampaignCfgRequestDTO campaignCfgRequestDTO) {
ResultDTO result = new ResultDTO();
result = completeCodeService.deleteCompleteCode(campaignCompleteCodeRequestDTO);
result = completeCodeService.deleteCompleteCode(campaignCfgRequestDTO);
return result;
}
@PostMapping("/listDelete")
@ResponseBody
public ResponseEntity<ResultDTO> deleteLists(@RequestBody @Valid CampaignCompleteCodeRequestDTO campaignCompleteCodeRequestDTO){
ResultDTO resultDTO = completeCodeService.deleteList(campaignCompleteCodeRequestDTO);
public ResponseEntity<ResultDTO> deleteLists(@RequestBody @Valid CampaignCfgRequestDTO campaignCfgRequestDTO){
ResultDTO resultDTO = completeCodeService.deleteList(campaignCfgRequestDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
......@@ -110,7 +109,7 @@ public class CampaignCompleteCodeController {
@CrossOrigin(origins = "*")
@PostMapping("/getMaxValue")
@ResponseBody
public ResultDTO findMaxValueCampaignType(@RequestBody CampaignCompleteCodeDTO completeCodeDTO){
public ResultDTO findMaxValueCampaignType(@RequestBody CampaignCfgDTO completeCodeDTO){
return completeCodeService.findMaxValueCampaignCompleteCode(completeCodeDTO);
}
......
package com.viettel.campaign.web.rest;
import com.sun.deploy.net.HttpRequest;
import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import com.viettel.campaign.service.CampaignExecuteService;
......@@ -11,8 +10,10 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.instrument.reactor.ReactorSleuth;
import org.springframework.http.*;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
......@@ -25,7 +26,7 @@ import java.util.Map;
@RestController
@RequestMapping("/ipcc/campaign")
@CrossOrigin("*")
@CrossOrigin
public class CampaignController {
private static final Logger logger = LoggerFactory.getLogger(CampaignController.class);
......@@ -98,14 +99,7 @@ public class CampaignController {
@GetMapping("/countRecallCustomer")
@ResponseBody
public ResponseEntity countRecallCustomer(@RequestParam("companySiteId") Long companySiteId, @RequestParam("agentId") Long agentId) {
ResultDTO result = campaignService.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 = campaignService.getCustomerRecall(campaignId, customerId);
Map result = campaignService.countRecallCustomer(companySiteId, agentId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
......@@ -169,7 +163,7 @@ public class CampaignController {
return new ResponseEntity<byte[]>(contentReturn, headers, HttpStatus.OK);
}
@RequestMapping(value = "/changeCampaignStatus", method = RequestMethod.POST)
@RequestMapping(value = "/changeCampaignStatus", method = RequestMethod.PUT)
public ResultDTO changeCampaignStatus(@RequestBody CampaignDTO dto, HttpServletRequest request) {
dto.setSessionId(request.getSession().getId());
return campaignService.changeCampaignStatus(dto);
......@@ -218,18 +212,4 @@ public class CampaignController {
ResultDTO resultDTO = campaignService.updateCampaign(dto);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@PostMapping("/findCustomerListReallocation")
@ResponseBody
public ResponseEntity<?> findCustomerListReallocation(@RequestBody CampaignRequestDTO dto) {
ResultDTO result = campaignService.findCustomerListReallocation(dto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/reallocationCustomer")
@ResponseBody
public ResponseEntity<?> reallocationCustomer(@RequestBody CampaignRequestDTO dto) {
ResultDTO result = campaignService.reallocationCustomer(dto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
}
......@@ -90,6 +90,13 @@ public class CustomerController {
return result;
}
@GetMapping("/getInformation")
@ResponseBody
public ResponseEntity getAllInformation(@RequestParam("companySiteId") Long companySiteId, @RequestParam("customerListId") Long customerListId, @RequestParam("customerId") Long customerId) {
ResultDTO result = customerService.getCustomerDetailById(companySiteId, customerListId, customerId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
// --------------- customer list table ----------------- //
......@@ -120,7 +127,7 @@ public class CustomerController {
// return new ResponseEntity<>("", HttpStatus.OK);
}
@PutMapping("/updateCustomerList")
@PostMapping("/updateCustomerList")
@ResponseBody
public ResultDTO updateCustomerList(@RequestBody @Valid CustomerListDTO customerListDTO) {
ResultDTO result = new ResultDTO();
......
package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.ScenarioAnswerService;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author anhvd_itsol
......@@ -16,25 +12,4 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping("/ipcc/campaign/scenario-answer")
@CrossOrigin
public class ScenarioAnswerController {
@Autowired
ScenarioAnswerService scenarioAnswerService;
@RequestMapping(value = "/findByScenarioQuestionCompany", method= RequestMethod.GET)
public ResponseEntity<ResultDTO> findByScenarioQuestionCampaignCompany(@RequestParam Long scenarioQuestionId,
@RequestParam Long companySiteId) {
ResultDTO resultDTO = scenarioAnswerService.findByScenarioQuestionCompany(scenarioQuestionId, companySiteId);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@RequestMapping(value = "/get-max-orderId", method = RequestMethod.GET)
public Long getMaxOrderId(@RequestParam Long scenarioQuestionId, @RequestParam Long companySiteId)
{
return scenarioAnswerService.getMaxAnswerOrderId(scenarioQuestionId, companySiteId);
}
@RequestMapping(value="/delete", method = RequestMethod.POST)
public ResponseEntity<ResultDTO> deleteQuestion(@RequestBody ScenarioAnswerDTO answerDTO) {
ResultDTO resultDTO = scenarioAnswerService.delete(answerDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
}
......@@ -43,10 +43,4 @@ public class ScenarioQuestionController {
public Integer countDuplicateQuestionCode(@RequestParam String code, @RequestParam Long scenarioId, @RequestParam Long campaignId, @RequestParam Long companySiteId) {
return scenarioQuestionService.countDuplicateQuestionCode(code, scenarioId, campaignId, companySiteId);
}
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public ResponseEntity<ResultDTO> deleteQuestion(@RequestBody ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = scenarioQuestionService.delete(scenarioQuestionDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
}
SELECT CC.CUSTOMER_ID AS customerId
FROM CAMPAIGN_CUSTOMER CC
LEFT JOIN CCMS_FULL.RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID
WHERE CC.CAMPAIGN_ID = :campaignId
AND CC.COMPANY_SITE_ID = :companySiteId
AND CC.IN_CAMPAIGN_STATUS = 1
AND CL.CUSTOMER_ID IS NULL
AND CL.END_TIME IS NULL
AND EXISTS(SELECT 1
FROM CCMS_FULL.CAMPAIGN_COMPLETE_CODE CCC
WHERE CC.STATUS = CCC.COMPLETE_VALUE
AND STATUS = 1
AND IS_RECALL = 1
AND COMPLETE_TYPE = 2
AND COMPANY_SITE_ID = :companySiteId)
AND CC.RECALL_TIME <= SYSDATE
AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') >= SYSDATE
AND CC.AGENT_ID = :agentId
SELECT CC.CUSTOMER_ID AS customerId
FROM CCMS_FULL.CAMPAIGN_CUSTOMER CC
LEFT JOIN CCMS_FULL.RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID
LEFT JOIN ACD_FULL.AGENTS AG ON CC.AGENT_ID = AG.AGENT_ID AND CC.CAMPAIGN_ID = AG.CURRENT_CAMPAIGN_ID
WHERE CC.CAMPAIGN_ID = :campaignId
AND CC.COMPANY_SITE_ID = :companySiteId
AND CC.IN_CAMPAIGN_STATUS = 1
AND CL.CUSTOMER_ID IS NULL
AND CL.END_TIME IS NULL
AND EXISTS(SELECT 1
FROM CCMS_FULL.CAMPAIGN_COMPLETE_CODE CCC
WHERE CC.STATUS = CCC.COMPLETE_VALUE
AND STATUS = 1
AND IS_RECALL = 1
AND COMPLETE_TYPE = 2
AND COMPANY_SITE_ID = :companySiteId)
AND CC.RECALL_TIME <= SYSDATE
AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') >= SYSDATE
AND (AG.CAMPAIGN_SYSTEM_STATUS IS NULL OR AG.CAMPAIGN_SYSTEM_STATUS <> 'AVAILABLE')
SELECT CC.CUSTOMER_ID AS customerId
FROM CAMPAIGN_CUSTOMER CC
LEFT JOIN RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID
WHERE CC.CAMPAIGN_ID = :campaignId
AND CC.COMPANY_SITE_ID = :companySiteId
AND CC.IN_CAMPAIGN_STATUS = 1
AND CL.CUSTOMER_ID IS NULL
AND CL.END_TIME IS NULL
AND EXISTS(SELECT 1
FROM CCMS_FULL.CAMPAIGN_COMPLETE_CODE CCC
WHERE CC.STATUS = CCC.COMPLETE_VALUE
AND STATUS = 1
AND IS_RECALL = 1
AND COMPLETE_TYPE = 2
AND COMPANY_SITE_ID = :companySiteId)
AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') <= SYSDATE
SELECT CC.CUSTOMER_ID AS customerId
FROM CAMPAIGN_CUSTOMER CC
INNER JOIN CUSTOMER C ON CC.CUSTOMER_ID = C.CUSTOMER_ID
LEFT JOIN RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID
WHERE CC.CAMPAIGN_ID = :campaignId
AND CC.COMPANY_SITE_ID = :companySiteId
AND CC.IN_CAMPAIGN_STATUS = 1
AND CL.CUSTOMER_ID IS NULL
AND CL.END_TIME IS NULL
AND CC.STATUS = 0
AND C.STATUS = 1
AND C.CALL_ALLOWED = 1
AND C.IPCC_STATUS = 'active'
SELECT CC.CUSTOMER_ID AS customerId
FROM CAMPAIGN_CUSTOMER CC
LEFT JOIN CCMS_FULL.RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID
WHERE CC.CAMPAIGN_ID = :campaignId
AND CC.COMPANY_SITE_ID = :companySiteId
AND CC.IN_CAMPAIGN_STATUS = 1
AND CL.CUSTOMER_ID IS NULL
AND CL.END_TIME IS NULL
AND EXISTS(SELECT 1
FROM CCMS_FULL.CAMPAIGN_COMPLETE_CODE CCC
WHERE CC.STATUS = CCC.COMPLETE_VALUE
AND STATUS = 1
AND IS_FINISH = 0
AND COMPLETE_TYPE = 1
AND COMPANY_SITE_ID = :companySiteId)
AND CC.RECALL_COUNT < C.MAX_RECALL
AND SYSDATE MAX(CC.CALL_TIME) >= C.RECALL_DURATION
AND C.STATUS = 1
AND C.CALL_ALLOWED = 1
AND C.IPCC_STATUS = 'active'
with campaign_type_list as (
select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type
from dual
connect by level <= regexp_count(:p_list_compaign_type, ',') +1
),
contact_status_list as (
select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status
from dual
connect by level <= regexp_count(:p_list_contact_status, ',') +1
),
survey_status_list as (
select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status
from dual
connect by level <= regexp_count(:p_list_survey_status, ',') +1
),
record_status_list as (
select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status
from dual
connect by level <= regexp_count(:p_list_record_status, ',') +1
),
campaign_id_list as (
select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id
from dual
connect by level <= regexp_count(:p_list_campaign_id, ',') +1
),
data_temp as (
select b.campaign_code campaignCode,
b.campaign_name campaignName,
c.user_name userName,
a.phone_number phoneNumber,
d.name customerName,
to_date(a.start_call, 'DD/MM/YYYY') startCall,
e.complete_name contactStatus,
f.complete_name surveyStatus,
g.status status,
a.status recordStatus,
(a.end_time - a.start_call)*24*60 callTime
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 = g.campaign_id
where a.status <> 0
and a.company_site_id = :p_company_site_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.duration_call >= :p_call_time_from
and a.duration_call <= :p_call_time_to
and to_char(a.customer_id) like '%'||:p_customer_id||'%'
and b.campaign_type in (select campaign_type from campaign_type_list)
and to_char(a.contact_status) in (select contact_status from contact_status_list)
and to_char(a.call_status) in (select survey_status from survey_status_list)
and to_char(a.status) in (select record_status from record_status_list)
and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')
and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))
and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')
and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')
),
data as (
select a.*, rownum row_ from data_temp a
)
select * from data
where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))
select b.campaign_code campaignCode,
b.campaign_name campaignName,
c.user_name userName,
a.phone_number phoneNumber,
d.name customerName,
to_date(a.start_call, 'DD/MM/YYYY') startCall,
e.complete_name contactStatus,
f.complete_name surveyStatus,
g.status status,
a.status recordStatus,
(a.end_time - a.start_call)*24*60 callTime
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 = g.campaign_id
where a.status <> 0
and a.company_site_id = :p_company_site_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.duration_call >= :p_call_time_from
and a.duration_call <= :p_call_time_to
......@@ -3,29 +3,7 @@ SELECT
a.USER_NAME userName,
a.STATUS status,
a.FULL_NAME fullName,
a.USER_TYPE_ID userTypeId,
a.CREATE_DATE createDate,
a.DESCRIPTION description,
a.STAFF_CODE staffCode,
a.MANAGER_ID managerId,
a.LOCATION_ID locationId,
a.DEPT_ID deptId,
a.DEPT_LEVEL deptLevel,
a.POS_ID posId,
a.DEPT_NAME deptName,
a.GROUP_ID groupId,
a.SITE_ID siteId,
a.COMPANY_SITE_ID companySiteId,
a.AGENT_TYPE agentType,
a.MOBILE_NUMBER mobileNumber,
a.FACEBOOK_ID facebookId,
a.LOGIN_TYPE loginType,
a.GOOGLE_ID googleId,
a.EMAIL email,
a.AVAILABLE_TICKET availableTicket,
a.USER_KAZOO_ID userKazooId,
b.FILTER_TYPE filterType
b.FILTER_TYPE filterType,
b.CAMPAIGN_AGENT_ID campaignAgentId
FROM VSA_USERS a
-- LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID
-- WHERE 1 = 1
-- AND a.COMPANY_SITE_ID = :p_company_site_id
......@@ -14,52 +14,12 @@ select
b.IPCC_STATUS ipccStatus,
c.MOBILE mobileNumber,
d.EMAIL email
from CUSTOMER_LIST_MAPPING a
from CUSTOMER_LIST_MAPPING a
join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID
left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE
FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID
left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL
FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID
where 1 = 1
where 1 = 1
and a.COMPANY_SITE_ID = :p_company_site_id
and a.CUSTOMER_LIST_ID = :p_customer_list_id
-- test dynamic field
-- select
-- a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,
-- a.COMPANY_SITE_ID companySiteId,
-- a.CUSTOMER_LIST_ID customerListId,
-- a.CUSTOMER_ID customerId,
-- b.NAME name,
-- b.DESCRIPTION description,
-- b.COMPANY_NAME companyName,
-- b.CUSTOMER_TYPE customerType,
-- b.CURRENT_ADDRESS currentAddress,
-- b.CALL_ALLOWED callAllowed,
-- b.EMAIL_ALLOWED emailAllowed,
-- b.SMS_ALLOWED smsAllowed,
-- b.IPCC_STATUS ipccStatus,
-- c.MOBILE mobileNumber,
-- d.EMAIL email,
-- e.TITLE title,
-- f.TYPE type,
-- h.VALUE_COMBOBOX valueCombobox,
-- e.VALUE_CHECKBOX valueCheckbox,
-- e.VALUE_DATE valueDate,
-- e.VALUE_NUMBER valueNumber,
-- e.VALUE_TEXT valueText
-- from CUSTOMER_LIST_MAPPING a
-- join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID
-- left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE
-- FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID
-- left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL
-- FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID
-- left join CUSTOMIZE_FIELD_OBJECT e on b.CUSTOMER_ID = e.OBJECT_ID
-- left join CUSTOMIZE_FIELDS f on e.CUSTOMIZE_FIELDS_ID = f.CUSTOMIZE_FIELD_ID
-- left join (SELECT FIELD_OPTION_VALUE_ID, NAME AS VALUE_COMBOBOX
-- FROM CUSTOMIZE_FIELD_OPTION_VALUE) h on h.FIELD_OPTION_VALUE_ID = e.FIELD_OPTION_VALUE_ID
-- where 1 = 1
-- and a.COMPANY_SITE_ID = :p_company_site_id
-- and a.CUSTOMER_LIST_ID = :p_customer_list_id
-- and e.FUNCTION_CODE = 'CUSTOMER'
select
a.COMPANY_SITE_ID companySiteId,
a.CUSTOMER_LIST_ID customerListId,
a.CUSTOMER_ID customerId,
e.TITLE title,
f.TYPE type,
h.VALUE_COMBOBOX valueCombobox,
e.VALUE_CHECKBOX valueCheckbox,
e.VALUE_DATE valueDate,
e.VALUE_NUMBER valueNumber,
e.VALUE_TEXT valueText
from CUSTOMER_LIST_MAPPING a
left join CUSTOMIZE_FIELD_OBJECT e on a.CUSTOMER_ID = e.OBJECT_ID
left join CUSTOMIZE_FIELDS f on e.CUSTOMIZE_FIELDS_ID = f.CUSTOMIZE_FIELD_ID
left join (SELECT FIELD_OPTION_VALUE_ID, NAME AS VALUE_COMBOBOX
FROM CUSTOMIZE_FIELD_OPTION_VALUE) h on h.FIELD_OPTION_VALUE_ID = e.FIELD_OPTION_VALUE_ID
where 1 = 1
and a.COMPANY_SITE_ID = :p_company_site_id
and a.CUSTOMER_LIST_ID = :p_customer_list_id
and a.CUSTOMER_ID = :p_customer_id
with contact as (
select customer_id, contact
from (
select * from customer_contact
where status = 1
and contact_type = 5
and is_direct_line = 1
order by create_date desc
)
where rownum = 1
),
connect_status as (
select complete_value, complete_name
from campaign_complete_code
where company_site_id = :p_company_site_id
and complete_type = 1
and complete_value <> 1
),
connect_status_list as (
select trim (regexp_substr(:p_list_connect_status, '[^,]+', 1, level)) connect_status
from dual
connect by level <= regexp_count(:p_list_connect_status, ',') +1
),
data as (
select a.campaign_customer_id campaignCustomerId,
b.name customerName,
c.contact mobileNumber,
to_char(a.call_time, 'DD/MM/YYYY HH24:MI:SS') connectTime,
d.complete_name connectStatus
from campaign_customer a
left join customer b on a.customer_id = b.customer_id
left join contact c on a.customer_id = c.customer_id
left join connect_status d on d.complete_value = a.status
where a.campaign_id = :p_campaign_id
and a.in_campaign_status = 1
and a.status in (select connect_status from connect_status_list)
order by connectTime desc, customerName
),
final_data as (
select a.*, rownum row_ from data a
)
select * from final_data
where row_ >= ((:p_page_number - 1) * :p_page_size + 1)
and row_ < (:p_page_number * :p_page_size + 1)
SELECT PAR_NAME,AP_PARAM_ID, PAR_TYPE FROM AP_PARAM a WHERE STATUS= 1 AND PAR_TYPE = 'CAMPAIGN_TYPE'
SELECT PAR_NAME,PAR_VALUE, PAR_TYPE FROM AP_PARAM a WHERE STATUS= 1 AND PAR_TYPE = 'CAMPAIGN_TYPE'
......@@ -19,8 +19,8 @@ SELECT
CHANEL chanel
FROM CAMPAIGN_COMPLETE_CODE
where 1 = 1
FROM CAMPAIGN_COMPLETE_CODE
where 1 = 1
AND STATUS = 1
and COMPANY_SITE_ID = :p_company_site_id
......@@ -3,7 +3,6 @@ SELECT
a.COMPLETE_VALUE completeValue,
a.COMPLETE_NAME completeName,
a.COMPLETE_TYPE completeType,
-- a.CAMPAIGN_TYPE campaignType,
c.PAR_NAME campaignType,
b.CHANEL chanel,
a.DESCRIPTION description,
......
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