Commit 2db2c01b authored by Phạm Duy Phi's avatar Phạm Duy Phi
parents 899ab631 e3d1e236
...@@ -3,7 +3,7 @@ package com.viettel.campaign; ...@@ -3,7 +3,7 @@ package com.viettel.campaign;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @SpringBootApplication(scanBasePackages={"com.viettel.campaign"})
public class ServiceCampaignApplication { public class ServiceCampaignApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
package com.viettel.campaign.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.*;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
import java.util.HashMap;
/**
* @author anhvd_itsol
*/
@Configuration
@PropertySource({ "classpath:application.yml" })
@EnableJpaRepositories(
basePackages = "com.viettel.campaign.repository.acd_full",
entityManagerFactoryRef = "acdFullEntityManager",
transactionManagerRef = DataSourceQualify.ACD_FULL
)
public class ACDFullDatasourceConfig {
@Autowired
private Environment env;
@Bean("datasource2.datasource")
public DataSource dataSource(){
OracleDataSource r = new OracleDataSource();
r.setDriverClassName(env.getProperty("spring.datasource2.driver-class-name"));
r.setPoolName("app.datasource2");
r.setJdbcUrl(env.getProperty("spring.datasource2.url"));
r.setMaximumPoolSize(env.getProperty("spring.datasource2.max_pool_size", Integer.class));
r.setPassword(env.getProperty("spring.datasource2.password"));
r.setUsername(env.getProperty("spring.datasource2.username"));
return r;
}
@Bean
public LocalContainerEntityManagerFactoryBean acdFullEntityManager() {
LocalContainerEntityManagerFactoryBean em2
= new LocalContainerEntityManagerFactoryBean();
em2.setDataSource(dataSource());
em2.setPackagesToScan(
new String[] { "com.viettel.campaign.model.acd_full" });
em2.setPersistenceUnitName(DataSourceQualify.JPA_UNIT_NAME_ACD_FULL); // Important !!
HibernateJpaVendorAdapter vendorAdapter
= new HibernateJpaVendorAdapter();
em2.setJpaVendorAdapter(vendorAdapter);
HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.dialect", env.getProperty("spring.jpa.database-platform"));
em2.setJpaPropertyMap(properties);
return em2;
}
@Bean(name = DataSourceQualify.ACD_FULL)
public PlatformTransactionManager acdFullTransactionManager() {
JpaTransactionManager transactionManager
= new JpaTransactionManager();
transactionManager.setEntityManagerFactory(
acdFullEntityManager().getObject());
return transactionManager;
}
@Bean(name = DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_ACD_FULL)
@DependsOn("datasource2.datasource")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource2.datasource") DataSource abcDataSource) {
return new NamedParameterJdbcTemplate(abcDataSource);
}
}
package com.viettel.campaign.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
import java.util.HashMap;
/**
* @author anhvd_itsol
*/
@Configuration
@PropertySource({ "classpath:application.yml" })
@EnableJpaRepositories(
basePackages = "com.viettel.campaign.repository.ccms_full",
entityManagerFactoryRef = "ccmsFullEntityManager",
transactionManagerRef = DataSourceQualify.CCMS_FULL
)
public class CCMSFullDatasourceConfig {
@Autowired
private Environment env;
@Bean("datasource1.datasource")
public DataSource dataSource(){
OracleDataSource r = new OracleDataSource();
r.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
r.setPoolName("app.datasource1");
r.setJdbcUrl(env.getProperty("spring.datasource.url"));
r.setMaximumPoolSize(env.getProperty("spring.datasource.max_pool_size", Integer.class));
r.setPassword(env.getProperty("spring.datasource.password"));
r.setUsername(env.getProperty("spring.datasource.username"));
return r;
}
@Bean
public LocalContainerEntityManagerFactoryBean ccmsFullEntityManager() {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(
new String[] { "com.viettel.campaign.model.ccms_full" });
em.setPersistenceUnitName(DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL); // Important !!
HibernateJpaVendorAdapter vendorAdapter
= new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.dialect", env.getProperty("spring.jpa.database-platform"));
em.setJpaPropertyMap(properties);
return em;
}
@Bean(name = DataSourceQualify.CCMS_FULL)
public PlatformTransactionManager ccmsFullTransactionManager() {
JpaTransactionManager transactionManager
= new JpaTransactionManager();
transactionManager.setEntityManagerFactory(
ccmsFullEntityManager().getObject());
return transactionManager;
}
@Bean(name = DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL)
@DependsOn("datasource1.datasource")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource1.datasource") DataSource abcDataSource) {
return new NamedParameterJdbcTemplate(abcDataSource);
}
}
package com.viettel.campaign.config;
/**
* @author anhvd_itsol
*/
public class DataSourceQualify {
public static final String CCMS_FULL = "ccmsFullTransactionManager";
public static final String ACD_FULL = "acdFullTransactionManager";
public static final String JPA_UNIT_NAME_CCMS_FULL ="PERSITENCE_UNIT_NAME_1";
public static final String JPA_UNIT_NAME_ACD_FULL ="PERSITENCE_UNIT_NAME_2";
public static final String NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL ="NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL";
public static final String NAMED_JDBC_PARAMETER_TEMPLATE_ACD_FULL ="NAMED_JDBC_PARAMETER_TEMPLATE_ACD_FULL";
}
...@@ -4,6 +4,7 @@ import com.viettel.campaign.job.CampaignJob; ...@@ -4,6 +4,7 @@ import com.viettel.campaign.job.CampaignJob;
import com.viettel.campaign.service.ApParamService; import com.viettel.campaign.service.ApParamService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.TaskScheduler;
...@@ -14,6 +15,7 @@ import org.springframework.scheduling.annotation.SchedulingConfigurer; ...@@ -14,6 +15,7 @@ import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger; import org.springframework.scheduling.support.CronTrigger;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
...@@ -69,9 +71,8 @@ public class JobConfig implements SchedulingConfigurer { ...@@ -69,9 +71,8 @@ public class JobConfig implements SchedulingConfigurer {
private void job2(TaskScheduler scheduler) { private void job2(TaskScheduler scheduler) {
job2 = scheduler.schedule(() -> { job2 = scheduler.schedule(() -> {
// log.info("processing job2 ..."); log.info(Thread.currentThread().getName() + " The Job executed at " + new Date());
// log.info(Thread.currentThread().getName() + " The Task2 executed at " + new Date()); campaignJob().process();
// campaignJob().process();
}, triggerContext -> { }, triggerContext -> {
String cronExp = "0/1 * * * * ?";// Can be pulled from a db . This will run every minute String cronExp = "0/1 * * * * ?";// Can be pulled from a db . This will run every minute
......
package com.viettel.campaign.config;
import com.zaxxer.hikari.HikariDataSource;
/**
* @author anhvd_itsol
*/
public class OracleDataSource extends HikariDataSource {
public OracleDataSource(){
super.addDataSourceProperty("useSSL", "false");
super.addDataSourceProperty("cachePrepStmts", "true");
super.addDataSourceProperty("prepStmtCacheSize", "256");
super.addDataSourceProperty("allowMultiQueries", "true");
super.addDataSourceProperty("useServerPrepStmts", "false");
super.addDataSourceProperty("useLocalSessionState", "true");
super.addDataSourceProperty("prepStmtCacheSqlLimit", "81920");
super.addDataSourceProperty("nullCatalogMeansCurrent", "true");
super.addDataSourceProperty("rewriteBatchedStatements", "false");
super.addDataSourceProperty("useOldAliasMetadataBehavior", "true");
this.setIdleTimeout(600000); this.setConnectionTimeout(18000); this.setMinimumIdle(0);
this.setMaxLifetime(1800000); this.setInitializationFailTimeout(0);
}
}
package com.viettel.campaign.job; package com.viettel.campaign.job;
import com.viettel.campaign.model.Campaign; import com.viettel.campaign.model.ccms_full.Campaign;
import com.viettel.campaign.model.ProcessConfig; import com.viettel.campaign.model.ccms_full.ProcessConfig;
import com.viettel.campaign.service.CampaignService; import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.service.ProcessConfigService; import com.viettel.campaign.service.ProcessConfigService;
import com.viettel.campaign.utils.DateTimeUtil; import com.viettel.campaign.utils.DateTimeUtil;
...@@ -35,7 +35,7 @@ public class CampaignJob { ...@@ -35,7 +35,7 @@ public class CampaignJob {
private CampaignService campaignService; private CampaignService campaignService;
// @Scheduled(fixedRate = 5000) // @Scheduled(fixedRate = 5000)
@Transactional( propagation = Propagation.REQUIRED) // @Transactional( propagation = Propagation.REQUIRED)
public void process() { public void process() {
log.info(Thread.currentThread().getName() + " The Task executed at " + dateFormat.format(new Date())); log.info(Thread.currentThread().getName() + " The Task executed at " + dateFormat.format(new Date()));
List<ProcessConfig> list = processConfigService.findAll(); List<ProcessConfig> list = processConfigService.findAll();
......
package com.viettel.campaign.mapper; package com.viettel.campaign.mapper;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.model.ApParam; import com.viettel.campaign.model.ccms_full.ApParam;
public class ApParamMapper extends BaseMapper<ApParam, ApParamDTO> { public class ApParamMapper extends BaseMapper<ApParam, ApParamDTO> {
......
package com.viettel.campaign.mapper; package com.viettel.campaign.mapper;
import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO; import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO;
import com.viettel.campaign.model.CampaignCompleteCode; import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
public class CampaignCompleteCodeMapper extends BaseMapper<CampaignCompleteCode, CampaignCompleteCodeDTO> { public class CampaignCompleteCodeMapper extends BaseMapper<CampaignCompleteCode, CampaignCompleteCodeDTO> {
......
package com.viettel.campaign.mapper; package com.viettel.campaign.mapper;
import com.viettel.campaign.model.CustomerList; import com.viettel.campaign.model.ccms_full.CustomerList;
import com.viettel.campaign.web.dto.CustomerListDTO; import com.viettel.campaign.web.dto.CustomerListDTO;
public class CustomerListMapper extends BaseMapper<CustomerList, CustomerListDTO> { public class CustomerListMapper extends BaseMapper<CustomerList, CustomerListDTO> {
......
package com.viettel.campaign.mapper; package com.viettel.campaign.mapper;
import com.viettel.campaign.web.dto.CustomerDTO; import com.viettel.campaign.web.dto.CustomerDTO;
import com.viettel.campaign.model.Customer; import com.viettel.campaign.model.ccms_full.Customer;
public class CustomerMapper extends BaseMapper<Customer, CustomerDTO> { public class CustomerMapper extends BaseMapper<Customer, CustomerDTO> {
......
package com.viettel.campaign.model.acd_full;
/**
* @author anhvd_itsol
*/
public class modeltest {
}
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -75,7 +75,6 @@ public class Campaign implements Serializable { ...@@ -75,7 +75,6 @@ public class Campaign implements Serializable {
private String dayOfWeek; private String dayOfWeek;
@Column(name = "CURRENT_TIME_MODE") @Column(name = "CURRENT_TIME_MODE")
private Long currentTimeMode; private Long currentTimeMode;
private Long currentTimeModel;
@Column(name = "WRAPUP_TIME_CONNECT") @Column(name = "WRAPUP_TIME_CONNECT")
private Long wrapupTimeConnect; private Long wrapupTimeConnect;
@Column(name = "WRAPUP_TIME_DISCONNECT") @Column(name = "WRAPUP_TIME_DISCONNECT")
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Data; import lombok.Data;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.viettel.campaign.model; package com.viettel.campaign.model.ccms_full;
import javax.persistence.Entity; import javax.persistence.Entity;
import lombok.Getter; import lombok.Getter;
......
package com.viettel.campaign.repository;
import com.viettel.campaign.model.CampaignCompleteCode;
public interface CampaignCompleteCodeRepositoryCustom {
// CampaignCompleteCode updateStatusById(Long id);
// CampaignCompleteCode findMaxValueCampaignType(Long companySiteId);
}
package com.viettel.campaign.repository.acd_full;
/**
* @author anhvd_itsol
*/
public class acdrepotest {
}
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ApParam; import com.viettel.campaign.model.ccms_full.ApParam;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.CampaignCompleteCode; import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
...@@ -12,7 +12,7 @@ import org.springframework.stereotype.Repository; ...@@ -12,7 +12,7 @@ import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@Repository @Repository
public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCompleteCode, Long>, CampaignCompleteCodeRepositoryCustom { public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCompleteCode, Long>{
@Query(" select u FROM CampaignCompleteCode u WHERE u.status = 1") @Query(" select u FROM CampaignCompleteCode u WHERE u.status = 1")
Page<CampaignCompleteCode> findAll(Pageable pageable); Page<CampaignCompleteCode> findAll(Pageable pageable);
...@@ -43,6 +43,6 @@ public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCo ...@@ -43,6 +43,6 @@ public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCo
@Query(value = "FROM CampaignCompleteCode WHERE status = 1 AND completeValue = :completeValue AND completeType = :completeType AND companySiteId = :companySiteId") @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); 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") @Query(value = "FROM CampaignCompleteCode WHERE status = 1 AND completeValue <> :completeValue AND completeType = :completeType AND companySiteId = :companySiteId")
List<CampaignCompleteCode> getCustomerStatusWithoutType(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId); List<CampaignCompleteCode> getCustomerStatusWithoutValue(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId);
} }
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);
}
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.CampaignCustomerList; import com.viettel.campaign.model.ccms_full.CampaignCustomerList;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.CampaignCustomer; import com.viettel.campaign.model.ccms_full.CampaignCustomer;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO; import com.viettel.campaign.web.dto.ContactCustResultDTO;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.Campaign; import com.viettel.campaign.model.ccms_full.Campaign;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@Repository @Repository
public interface CampaignRepository extends JpaRepository<Campaign, Long>, CampaignRepositoryCustom { public interface CampaignRepository extends JpaRepository<Campaign, Long> {
List<Campaign> findAllByCompanySiteId(Long companyId); List<Campaign> findAllByCompanySiteId(Long companyId);
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.CustomerContact; import com.viettel.campaign.model.ccms_full.CustomerContact;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.CustomerListMapping; import com.viettel.campaign.model.ccms_full.CustomerListMapping;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.CustomerList; import com.viettel.campaign.model.ccms_full.CustomerList;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.Customer; import com.viettel.campaign.model.ccms_full.Customer;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ProcessConfig; import com.viettel.campaign.model.ccms_full.ProcessConfig;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.Ticket; import com.viettel.campaign.model.ccms_full.Ticket;
public interface TicketRepository extends BaseRepository<Ticket>, TicketRepositoryCustom { public interface TicketRepository extends BaseRepository<Ticket>, TicketRepositoryCustom {
} }
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.TicketDTO; import com.viettel.campaign.web.dto.TicketDTO;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
......
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.TimeRangeDialMode; import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
*/ */
@Repository @Repository
public interface TimeRangeDialModeRepository extends JpaRepository<TimeRangeDialMode, Long> { public interface TimeRangeDialModeRepository extends JpaRepository<TimeRangeDialMode, Long> {
List<TimeRangeDialMode> findTimeRangeDialModeByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
} }
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.TimeZoneDialMode; import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
*/ */
@Repository @Repository
public interface TimeZoneDialModeRepository extends JpaRepository<TimeZoneDialMode, Long> { public interface TimeZoneDialModeRepository extends JpaRepository<TimeZoneDialMode, Long> {
List<TimeZoneDialMode> findTimeZoneDialModeByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
} }
package com.viettel.campaign.repository; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
......
package com.viettel.campaign.repository.impl; package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.repository.ApParamRepositoryCustom; import com.viettel.campaign.repository.ccms_full.ApParamRepositoryCustom;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
......
package com.viettel.campaign.repository.impl; package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.model.CampaignCompleteCode; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.CampaignCompleteCodeRepositoryCustom; import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.repository.ccms_full.CampaignCompleteCodeRepositoryCustom;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Repository @Repository
public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompleteCodeRepositoryCustom { public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompleteCodeRepositoryCustom {
@Autowired @Autowired
EntityManager entityManager; @PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
private EntityManager entityManager;
private Logger log = LoggerFactory.getLogger(CampaignCompleteCompleteCodeRepositoryIpml.class); private Logger log = LoggerFactory.getLogger(CampaignCompleteCompleteCodeRepositoryIpml.class);
@Transactional @Override
// @Transactional(DataSourceQualify.CCMS_FULL)
public CampaignCompleteCode updateStatusById(Long id) { public CampaignCompleteCode updateStatusById(Long id) {
CampaignCompleteCode dto = new CampaignCompleteCode(); CampaignCompleteCode dto = new CampaignCompleteCode();
try { try {
...@@ -32,7 +34,8 @@ public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompl ...@@ -32,7 +34,8 @@ public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompl
return dto; return dto;
} }
@Transactional @Override
// @Transactional(DataSourceQualify.CCMS_FULL)
public CampaignCompleteCode findMaxValueCampaignType(Long companySiteId) { public CampaignCompleteCode findMaxValueCampaignType(Long companySiteId) {
CampaignCompleteCode result = new CampaignCompleteCode(); CampaignCompleteCode result = new CampaignCompleteCode();
try { try {
......
package com.viettel.campaign.repository.impl; package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.repository.CampaignRepositoryCustom; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.ccms_full.CampaignRepositoryCustom;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil; import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil; import com.viettel.campaign.utils.HibernateUtil;
...@@ -20,6 +21,7 @@ import org.springframework.data.domain.*; ...@@ -20,6 +21,7 @@ import org.springframework.data.domain.*;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -32,6 +34,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -32,6 +34,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
private static final Logger logger = LogManager.getLogger(CampaignRepositoryImpl.class); private static final Logger logger = LogManager.getLogger(CampaignRepositoryImpl.class);
@Autowired @Autowired
@PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager; EntityManager entityManager;
@Override @Override
...@@ -285,7 +288,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -285,7 +288,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
query.addScalar("customerNumber", new LongType()); query.addScalar("customerNumber", new LongType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("numOfJoinedCus", new LongType()); query.addScalar("numOfJoinedCus", new LongType());
query.addScalar("numOfNotJoinedCus", new LongType()); query.addScalar("numOfInteractedCus", new LongType());
query.addScalar("numOfNotInteractedCus", new LongType());
query.addScalar("numOfLockCus", new LongType()); query.addScalar("numOfLockCus", new LongType());
query.addScalar("companySiteId", new LongType()); query.addScalar("companySiteId", new LongType());
query.addScalar("content", new StringType()); query.addScalar("content", new StringType());
...@@ -302,6 +306,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -302,6 +306,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
if (list.size() > 0) { if (list.size() > 0) {
count = query.list().size(); count = query.list().size();
} }
if(requestDto.getPage() != null && requestDto.getPageSize() != null) {
Pageable pageable = SQLBuilder.buildPageable(requestDto); Pageable pageable = SQLBuilder.buildPageable(requestDto);
if (pageable != null) { if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize()); query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
...@@ -310,6 +315,10 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -310,6 +315,10 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
List<CampaignDTO> data = query.list(); List<CampaignDTO> data = query.list();
Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count); Page<CampaignDTO> dataPage = new PageImpl<>(data, pageable, count);
result.setData(dataPage); result.setData(dataPage);
}else {
List<CampaignDTO> dataExport = query.list();
result.setData(dataExport);
}
result.setErrorCode(Constants.ApiErrorCode.SUCCESS); result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS); result.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception ex) { } catch (Exception ex) {
......
package com.viettel.campaign.repository.impl; package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.repository.TicketRepositoryCustom; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.ccms_full.TicketRepositoryCustom;
import com.viettel.campaign.web.dto.TicketDTO; import com.viettel.campaign.web.dto.TicketDTO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -15,6 +17,7 @@ import java.util.List; ...@@ -15,6 +17,7 @@ import java.util.List;
public class TicketRepositoryImpl implements TicketRepositoryCustom { public class TicketRepositoryImpl implements TicketRepositoryCustom {
@Autowired @Autowired
@PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager; EntityManager entityManager;
@Override @Override
......
package com.viettel.campaign.repository.impl; package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.repository.UserActionLogRepositoryCustom; import com.viettel.campaign.repository.ccms_full.UserActionLogRepositoryCustom;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.HibernateUtil; import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
......
...@@ -2,7 +2,7 @@ package com.viettel.campaign.service; ...@@ -2,7 +2,7 @@ package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.model.ApParam; import com.viettel.campaign.model.ccms_full.ApParam;
import java.util.List; import java.util.List;
......
package com.viettel.campaign.service; package com.viettel.campaign.service;
import com.viettel.campaign.model.Campaign; import com.viettel.campaign.model.ccms_full.Campaign;
import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import com.viettel.campaign.web.dto.CampaignDTO; import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -36,4 +38,10 @@ public interface CampaignService { ...@@ -36,4 +38,10 @@ public interface CampaignService {
ResultDTO changeCampaignStatus(CampaignDTO dto); ResultDTO changeCampaignStatus(CampaignDTO dto);
ResultDTO checkAllowStatusToPrepare(Long campaignId); ResultDTO checkAllowStatusToPrepare(Long campaignId);
XSSFWorkbook exportCampaigns(CampaignRequestDTO dto);
List<TimeRangeDialMode> getCampaignTimeRangeMode (Long campaignId, Long companySiteId);
List<TimeZoneDialMode> getCampaignTimeZoneMode (Long campaignId, Long companySiteId);
} }
package com.viettel.campaign.service; package com.viettel.campaign.service;
import com.viettel.campaign.model.CustomerList; import com.viettel.campaign.model.ccms_full.CustomerList;
import com.viettel.campaign.web.dto.CustomerContactDTO; import com.viettel.campaign.web.dto.CustomerContactDTO;
import com.viettel.campaign.web.dto.CustomerDTO; import com.viettel.campaign.web.dto.CustomerDTO;
import com.viettel.campaign.web.dto.CustomerListDTO; import com.viettel.campaign.web.dto.CustomerListDTO;
...@@ -41,6 +41,7 @@ public interface CustomerService { ...@@ -41,6 +41,7 @@ public interface CustomerService {
// ------------ customer contact ------------ // // ------------ customer contact ------------ //
ResultDTO getCustomerContact(CustomerContactDTO customer); ResultDTO getCustomerContact(CustomerContactDTO customer);
// danh sach khach hang cua chien dich // // danh sach khach hang cua chien dich //
ResultDTO searchCustomerListInfoFromCustomerList(int page, int pageSize, String sort, Long campaignId, Long companySiteId); ResultDTO searchCustomerListInfoFromCustomerList(int page, int pageSize, String sort, Long campaignId, Long companySiteId);
......
package com.viettel.campaign.service; package com.viettel.campaign.service;
import com.viettel.campaign.model.ProcessConfig; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.ProcessConfigRepository; import com.viettel.campaign.model.ccms_full.ProcessConfig;
import com.viettel.campaign.repository.ccms_full.ProcessConfigRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -20,17 +21,18 @@ public class ProcessConfigService { ...@@ -20,17 +21,18 @@ public class ProcessConfigService {
@Autowired @Autowired
private ProcessConfigRepository processConfigRepository; private ProcessConfigRepository processConfigRepository;
@Transactional(readOnly = true) @Transactional(DataSourceQualify.CCMS_FULL)
public List<ProcessConfig> findAll(){ public List<ProcessConfig> findAll(){
return processConfigRepository.findAll(); return processConfigRepository.findAll();
} }
@Transactional(readOnly = true) @Transactional(DataSourceQualify.CCMS_FULL)
public List<ProcessConfig> findAllByCode(String configCode){ public List<ProcessConfig> findAllByCode(String configCode){
return processConfigRepository.findAllByConfigCode(configCode); return processConfigRepository.findAllByConfigCode(configCode);
} }
@Transactional(DataSourceQualify.CCMS_FULL)
public void update(ProcessConfig pc){ public void update(ProcessConfig pc){
processConfigRepository.save(pc); processConfigRepository.save(pc);
} }
......
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.service.ApParamService; import com.viettel.campaign.service.ApParamService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.mapper.ApParamMapper; import com.viettel.campaign.mapper.ApParamMapper;
import com.viettel.campaign.model.ApParam; import com.viettel.campaign.model.ccms_full.ApParam;
import com.viettel.campaign.repository.ApParamRepository; import com.viettel.campaign.repository.ccms_full.ApParamRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
...@@ -14,8 +15,10 @@ import org.springframework.stereotype.Service; ...@@ -14,8 +15,10 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.transaction.annotation.Transactional;
@Service @Service
public class ApParamServiceImpl implements ApParamService { public class ApParamServiceImpl implements ApParamService {
...@@ -26,11 +29,13 @@ public class ApParamServiceImpl implements ApParamService { ...@@ -26,11 +29,13 @@ public class ApParamServiceImpl implements ApParamService {
private static final Logger logger = LogManager.getLogger(ApParamServiceImpl.class); private static final Logger logger = LogManager.getLogger(ApParamServiceImpl.class);
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public Iterable<ApParam> getAllParams(int page, int pageSize, String sort) { public Iterable<ApParam> getAllParams(int page, int pageSize, String sort) {
return apParamRepository.findAll(PageRequest.of(page, pageSize, Sort.by(sort))); return apParamRepository.findAll(PageRequest.of(page, pageSize, Sort.by(sort)));
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<ApParam> getParamByName(int page, int pageSize, String sort, String parName) { public List<ApParam> getParamByName(int page, int pageSize, String sort, String parName) {
List<ApParam> lst = new ArrayList<>(); List<ApParam> lst = new ArrayList<>();
...@@ -41,6 +46,7 @@ public class ApParamServiceImpl implements ApParamService { ...@@ -41,6 +46,7 @@ public class ApParamServiceImpl implements ApParamService {
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO createApParam(ApParamDTO apParamDTO) { public ResultDTO createApParam(ApParamDTO apParamDTO) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
ApParamMapper apParamMapper = new ApParamMapper(); ApParamMapper apParamMapper = new ApParamMapper();
...@@ -67,6 +73,7 @@ public class ApParamServiceImpl implements ApParamService { ...@@ -67,6 +73,7 @@ public class ApParamServiceImpl implements ApParamService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findParamByParType(String parType) { public ResultDTO findParamByParType(String parType) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
......
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.mapper.CampaignCompleteCodeMapper; import com.viettel.campaign.mapper.CampaignCompleteCodeMapper;
import com.viettel.campaign.model.CampaignCompleteCode; import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
import com.viettel.campaign.repository.CampaignCompleteCodeRepository; import com.viettel.campaign.repository.ccms_full.CampaignCompleteCodeRepository;
import com.viettel.campaign.service.CampaignCompleteCodeService; import com.viettel.campaign.service.CampaignCompleteCodeService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil; import com.viettel.campaign.utils.DataUtil;
...@@ -36,6 +37,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -36,6 +37,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
CampaignCompleteCodeRepository completeCodeRepository; CampaignCompleteCodeRepository completeCodeRepository;
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public Map listAllCompleteCode(int page, int pageSize, String sort) { public Map listAllCompleteCode(int page, int pageSize, String sort) {
Map result = new HashMap(); Map result = new HashMap();
Page<CampaignCompleteCode> pg = completeCodeRepository.findAll(PageRequest.of(page, pageSize, Sort.by(sort))); Page<CampaignCompleteCode> pg = completeCodeRepository.findAll(PageRequest.of(page, pageSize, Sort.by(sort)));
...@@ -45,6 +47,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -45,6 +47,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public Map listCompleteCodeByName(int page, int pageSize, String sort, String name) { public Map listCompleteCodeByName(int page, int pageSize, String sort, String name) {
Map result = new HashMap(); Map result = new HashMap();
List<CampaignCompleteCode> lst = new ArrayList<>(); List<CampaignCompleteCode> lst = new ArrayList<>();
...@@ -60,6 +63,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -60,6 +63,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO createCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) { public ResultDTO createCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CampaignCompleteCodeMapper compCodeMapper = new CampaignCompleteCodeMapper(); CampaignCompleteCodeMapper compCodeMapper = new CampaignCompleteCodeMapper();
...@@ -86,6 +90,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -86,6 +90,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO updateCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) { public ResultDTO updateCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CampaignCompleteCodeMapper compCodeMapper = new CampaignCompleteCodeMapper(); CampaignCompleteCodeMapper compCodeMapper = new CampaignCompleteCodeMapper();
...@@ -112,6 +117,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -112,6 +117,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) { public ResultDTO deleteCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CampaignCompleteCodeMapper compCodeMapper = new CampaignCompleteCodeMapper(); CampaignCompleteCodeMapper compCodeMapper = new CampaignCompleteCodeMapper();
...@@ -136,8 +142,8 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -136,8 +142,8 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
return resultDTO; return resultDTO;
} }
@Transactional
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteList(List<Long> completeCodeDtos) { public ResultDTO deleteList(List<Long> completeCodeDtos) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -156,6 +162,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -156,6 +162,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteById(Long id) { public ResultDTO deleteById(Long id) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
...@@ -172,7 +179,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -172,7 +179,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
return result; return result;
} }
// @Override // @Override
// public ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) { // public ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) {
// ResultDTO resultDTO = new ResultDTO(); // ResultDTO resultDTO = new ResultDTO();
// CampaignCompleteCodeMapper campaignCompleteCodeMapper = new CampaignCompleteCodeMapper(); // CampaignCompleteCodeMapper campaignCompleteCodeMapper = new CampaignCompleteCodeMapper();
...@@ -203,6 +210,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -203,6 +210,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
// } // }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) { public ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
...@@ -252,6 +260,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -252,6 +260,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getListStatus(String completeValue, Short completeType, Long companySiteId) { public ResultDTO getListStatus(String completeValue, Short completeType, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -268,10 +277,11 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -268,10 +277,11 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getListStatusWithoutType(String completeValue, Short completeType, Long companySiteId) { public ResultDTO getListStatusWithoutType(String completeValue, Short completeType, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
List<CampaignCompleteCode> list = completeCodeRepository.getCustomerStatusWithoutType(completeValue, completeType, companySiteId); List<CampaignCompleteCode> list = completeCodeRepository.getCustomerStatusWithoutValue(completeValue, completeType, companySiteId);
resultDTO.setListData(list); resultDTO.setListData(list);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
......
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.repository.CampaignExecuteRepository; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.ccms_full.CampaignExecuteRepository;
import com.viettel.campaign.service.CampaignExecuteService; import com.viettel.campaign.service.CampaignExecuteService;
import com.viettel.campaign.utils.BundleUtils; import com.viettel.campaign.utils.BundleUtils;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
...@@ -8,7 +9,6 @@ import com.viettel.campaign.web.dto.ApParamDTO; ...@@ -8,7 +9,6 @@ import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO; import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.commons.collections4.BagUtils;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
...@@ -16,8 +16,8 @@ import org.slf4j.Logger; ...@@ -16,8 +16,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -34,6 +34,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -34,6 +34,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
//<editor-fold: hungtt> //<editor-fold: hungtt>
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getComboBoxStatus(String companySiteId, String completeType) { public ResultDTO getComboBoxStatus(String companySiteId, String completeType) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -48,6 +49,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -48,6 +49,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getComboCampaignType(String companySiteId) { public ResultDTO getComboCampaignType(String companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -62,6 +64,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -62,6 +64,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchInteractiveResult(CampaignRequestDTO dto) { public ResultDTO searchInteractiveResult(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -73,6 +76,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -73,6 +76,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto) { public XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto) {
Locale locale = Locale.forLanguageTag("vi"); Locale locale = Locale.forLanguageTag("vi");
List<ContactCustResultDTO> list = campaignExecuteRepository.getExcelInteractiveResult(dto); List<ContactCustResultDTO> list = campaignExecuteRepository.getExcelInteractiveResult(dto);
......
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.mapper.CustomerListMapper; import com.viettel.campaign.mapper.CustomerListMapper;
import com.viettel.campaign.mapper.CustomerMapper; import com.viettel.campaign.mapper.CustomerMapper;
import com.viettel.campaign.model.Customer; import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.model.CustomerContact; import com.viettel.campaign.model.ccms_full.CustomerContact;
import com.viettel.campaign.model.CustomerList; import com.viettel.campaign.model.ccms_full.CustomerList;
import com.viettel.campaign.repository.*; import com.viettel.campaign.repository.ccms_full.*;
import com.viettel.campaign.service.CustomerService; import com.viettel.campaign.service.CustomerService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil; import com.viettel.campaign.utils.DataUtil;
...@@ -28,6 +29,7 @@ import org.springframework.stereotype.Service; ...@@ -28,6 +29,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -36,6 +38,7 @@ import java.util.List; ...@@ -36,6 +38,7 @@ import java.util.List;
public class CustomerServiceImpl implements CustomerService { public class CustomerServiceImpl implements CustomerService {
@Autowired @Autowired
@PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager; EntityManager entityManager;
@Autowired @Autowired
...@@ -57,6 +60,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -57,6 +60,7 @@ public class CustomerServiceImpl implements CustomerService {
CustomerListMappingRepository customerListMappingRepository; CustomerListMappingRepository customerListMappingRepository;
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId) { public ResultDTO getAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
...@@ -126,6 +130,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -126,6 +130,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCustomerId(Long customerId) { public ResultDTO getCustomerId(Long customerId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
...@@ -144,6 +149,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -144,6 +149,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId, String name, String mobileNumber, String email) { public ResultDTO searchAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId, String name, String mobileNumber, String email) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
...@@ -242,7 +248,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -242,7 +248,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO createCustomer(CustomerDTO customerDTO) { public ResultDTO createCustomer(CustomerDTO customerDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CustomerMapper customerMapper = new CustomerMapper(); CustomerMapper customerMapper = new CustomerMapper();
...@@ -276,8 +282,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -276,8 +282,8 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO; return resultDTO;
} }
@Transactional
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteCustomer(CustomerRequestDTO customerRequestDTO) { public ResultDTO deleteCustomer(CustomerRequestDTO customerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -299,8 +305,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -299,8 +305,8 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO; return resultDTO;
} }
@Transactional
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteIds(CustomerRequestDTO customerRequestDTO) { public ResultDTO deleteIds(CustomerRequestDTO customerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -336,6 +342,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -336,6 +342,7 @@ public class CustomerServiceImpl implements CustomerService {
// ------------- customer list ----------------- // // ------------- customer list ----------------- //
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getAllCustomerList(int page, int pageSize, String sort, Long companySiteId) { public ResultDTO getAllCustomerList(int page, int pageSize, String sort, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
...@@ -400,6 +407,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -400,6 +407,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO createCustomerList(CustomerListDTO customerListDTO) { public ResultDTO createCustomerList(CustomerListDTO customerListDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CustomerListMapper customerListMapper = new CustomerListMapper(); CustomerListMapper customerListMapper = new CustomerListMapper();
...@@ -430,6 +438,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -430,6 +438,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO updateCustomerList(CustomerListDTO customerListDTO) { public ResultDTO updateCustomerList(CustomerListDTO customerListDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CustomerListMapper customerListMapper = new CustomerListMapper(); CustomerListMapper customerListMapper = new CustomerListMapper();
...@@ -460,8 +469,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -460,8 +469,8 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO; return resultDTO;
} }
@Transactional
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteCustomerList(CustomerListDTO customerListDTO) { public ResultDTO deleteCustomerList(CustomerListDTO customerListDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
...@@ -487,8 +496,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -487,8 +496,8 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO; return resultDTO;
} }
@Transactional
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteCustomerListIds(CustomerRequestDTO customerRequestDTO) { public ResultDTO deleteCustomerListIds(CustomerRequestDTO customerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -515,6 +524,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -515,6 +524,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchCustomerList(SearchCustomerRequestDTO searchCustomerRequestDTO) { public ResultDTO searchCustomerList(SearchCustomerRequestDTO searchCustomerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
...@@ -606,11 +616,13 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -606,11 +616,13 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public CustomerList getLatestCreated(Long companySiteId) { public CustomerList getLatestCreated(Long companySiteId) {
return customerListRepository.latestCreated(companySiteId); return customerListRepository.latestCreated(companySiteId);
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCustomerContact(CustomerContactDTO customer) { public ResultDTO getCustomerContact(CustomerContactDTO customer) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
...@@ -634,6 +646,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -634,6 +646,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCustomerRecall(Long campaignId, Long customerId) { public ResultDTO getCustomerRecall(Long campaignId, Long customerId) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
...@@ -656,6 +669,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -656,6 +669,7 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchCustomerListInfoFromCustomerList(int page, int pageSize, String sort, Long campaignId, Long companySiteId) { public ResultDTO searchCustomerListInfoFromCustomerList(int page, int pageSize, String sort, Long campaignId, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
......
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.repository.TicketRepository; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.ccms_full.TicketRepository;
import com.viettel.campaign.service.TicketService; import com.viettel.campaign.service.TicketService;
import com.viettel.campaign.web.dto.TicketDTO; import com.viettel.campaign.web.dto.TicketDTO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
...@@ -20,6 +22,7 @@ public class TicketServiceImpl implements TicketService { ...@@ -20,6 +22,7 @@ public class TicketServiceImpl implements TicketService {
TicketRepository ticketRepository; TicketRepository ticketRepository;
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public Map getHistory(int page, int pageSize, String sort, String customerId) { public Map getHistory(int page, int pageSize, String sort, String customerId) {
Map result = new HashMap(); Map result = new HashMap();
List<TicketDTO> lst = new ArrayList<>(); List<TicketDTO> lst = new ArrayList<>();
......
...@@ -270,4 +270,5 @@ public class DataUtil { ...@@ -270,4 +270,5 @@ public class DataUtil {
public static boolean isNullOrZero(Short value) { public static boolean isNullOrZero(Short value) {
return (value == null || value.equals(Short.parseShort("0"))); return (value == null || value.equals(Short.parseShort("0")));
} }
public static boolean isNullOrZero(Integer value) { return (value == null || value.equals(Integer.parseInt("0"))); }
} }
package com.viettel.campaign.utils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* @author anhvd_itsol
*/
public class WorkBookBuilder {
public static Font buildDefaultFont(XSSFWorkbook workbook) {
Font defaultFont = workbook.createFont();
defaultFont.setFontHeightInPoints((short) 13);
defaultFont.setFontName("Times New Roman");
defaultFont.setColor(IndexedColors.BLACK.getIndex());
return defaultFont;
}
public static Font buildDefaultTitleFont(XSSFWorkbook workbook) {
Font titleFont = workbook.createFont();
titleFont.setFontHeightInPoints((short) 18);
titleFont.setFontName("Times New Roman");
titleFont.setColor(IndexedColors.BLACK.getIndex());
titleFont.setBold(true);
return titleFont;
}
public static Font buildDefaultHeaderFont(XSSFWorkbook workbook) {
Font headerFont = workbook.createFont();
headerFont.setFontHeightInPoints((short) 13);
headerFont.setFontName("Times New Roman");
headerFont.setColor(IndexedColors.BLACK.getIndex());
headerFont.setBold(true);
return headerFont;
}
public static CellStyle buildDefaultStyleTitle(XSSFWorkbook workbook) {
CellStyle styleTitle = workbook.createCellStyle();
styleTitle.setFont(buildDefaultTitleFont(workbook));
styleTitle.setAlignment(HorizontalAlignment.CENTER);
return styleTitle;
}
public static CellStyle buildDefaultStyleRowHeader(XSSFWorkbook workbook) {
CellStyle styleRowHeader = workbook.createCellStyle();
styleRowHeader.setFont(buildDefaultHeaderFont(workbook));
styleRowHeader.setAlignment(HorizontalAlignment.CENTER);
styleRowHeader.setFillForegroundColor(IndexedColors.LIGHT_GREEN.getIndex());
styleRowHeader.setFillPattern(FillPatternType.SOLID_FOREGROUND);
styleRowHeader.setBorderRight(BorderStyle.THIN);
styleRowHeader.setRightBorderColor(IndexedColors.BLACK.getIndex());
styleRowHeader.setBorderBottom(BorderStyle.THIN);
styleRowHeader.setBottomBorderColor(IndexedColors.BLACK.getIndex());
styleRowHeader.setBorderLeft(BorderStyle.THIN);
styleRowHeader.setLeftBorderColor(IndexedColors.BLACK.getIndex());
styleRowHeader.setBorderTop(BorderStyle.THIN);
styleRowHeader.setTopBorderColor(IndexedColors.BLACK.getIndex());
return styleRowHeader;
}
public static CellStyle buildDefaultStyleRow(XSSFWorkbook workbook) {
CellStyle styleRow = workbook.createCellStyle();
styleRow.setFont(buildDefaultFont(workbook));
return styleRow;
}
public static void writeCellContent(Row row, CellStyle rowStyle, int colNo, Object content) {
Cell cell = row.createCell(colNo);
if (content == null) {
cell.setCellValue("");
} else {
cell.setCellValue(String.valueOf(content));
}
cell.setCellStyle(rowStyle);
}
}
...@@ -10,8 +10,8 @@ import java.io.Serializable; ...@@ -10,8 +10,8 @@ import java.io.Serializable;
public class BaseDTO implements Serializable { public class BaseDTO implements Serializable {
protected String keySet; protected String keySet;
protected int pageSize; protected Integer pageSize;
protected int page; protected Integer page;
protected String sort; protected String sort;
protected String langKey; protected String langKey;
} }
...@@ -55,7 +55,6 @@ public class CampaignDTO extends BaseDTO { ...@@ -55,7 +55,6 @@ public class CampaignDTO extends BaseDTO {
private Integer timeWaitAgent; private Integer timeWaitAgent;
private Long questIndex; private Long questIndex;
private Long numOfJoinedCus; private Long numOfJoinedCus;
private Long numOfNotJoinedCus;
private Long numOfLockCus; private Long numOfLockCus;
private String campaignTypeName; private String campaignTypeName;
private Date timeRangeStartTime; private Date timeRangeStartTime;
...@@ -65,4 +64,6 @@ public class CampaignDTO extends BaseDTO { ...@@ -65,4 +64,6 @@ public class CampaignDTO extends BaseDTO {
private List<TimeZoneDialModeDTO> lstTimeZone; private List<TimeZoneDialModeDTO> lstTimeZone;
private Short agentStatus; private Short agentStatus;
private String sessionId; private String sessionId;
private Long numOfInteractedCus;
private Long numOfNotInteractedCus;
} }
package com.viettel.campaign.web.rest; package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ApParam; import com.viettel.campaign.model.ccms_full.ApParam;
import com.viettel.campaign.service.ApParamService; import com.viettel.campaign.service.ApParamService;
import com.viettel.campaign.service.CampaignExecuteService; import com.viettel.campaign.service.CampaignExecuteService;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
......
package com.viettel.campaign.web.rest; package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import com.viettel.campaign.repository.ccms_full.TimeRangeDialModeRepository;
import com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository;
import com.viettel.campaign.service.CampaignExecuteService; import com.viettel.campaign.service.CampaignExecuteService;
import com.viettel.campaign.service.CampaignService; import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.web.dto.CampaignDTO; import com.viettel.campaign.web.dto.CampaignDTO;
...@@ -9,7 +13,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; ...@@ -9,7 +13,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.instrument.reactor.ReactorSleuth;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
...@@ -21,6 +24,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -21,6 +24,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.List;
import java.util.Map; import java.util.Map;
@RestController @RestController
...@@ -36,6 +40,12 @@ public class CampaignController { ...@@ -36,6 +40,12 @@ public class CampaignController {
@Autowired @Autowired
CampaignExecuteService campaignExecuteService; CampaignExecuteService campaignExecuteService;
@Autowired
TimeRangeDialModeRepository timeRangeDialModeRepository;
@Autowired
TimeZoneDialModeRepository timeZoneDialModeRepository;
@PostMapping("/searchCampaignExecute") @PostMapping("/searchCampaignExecute")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> searchCampaignExecute(@RequestBody CampaignRequestDTO requestDto) { public ResponseEntity<ResultDTO> searchCampaignExecute(@RequestBody CampaignRequestDTO requestDto) {
...@@ -122,4 +132,47 @@ public class CampaignController { ...@@ -122,4 +132,47 @@ public class CampaignController {
public ResultDTO checkAllowStatusToPrepare(@RequestParam("campaignId") Long campaignId) { public ResultDTO checkAllowStatusToPrepare(@RequestParam("campaignId") Long campaignId) {
return campaignService.checkAllowStatusToPrepare(campaignId); return campaignService.checkAllowStatusToPrepare(campaignId);
} }
@RequestMapping(value = "/exportCampaigns", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<?> exportCampaigns(HttpServletResponse response, @RequestBody CampaignRequestDTO dto) {
XSSFWorkbook workbook = null;
byte[] contentReturn = null;
try {
String fileName = "report_campaigns.xlsx";
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
OutputStream outputStream;
workbook = campaignService.exportCampaigns(dto);
outputStream = response.getOutputStream();
workbook.write(outputStream);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
workbook.write(byteArrayOutputStream);
contentReturn = byteArrayOutputStream.toByteArray();
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
return new ResponseEntity<byte[]>(null, null, HttpStatus.BAD_REQUEST);
} finally {
if (workbook != null) {
try {
workbook.close();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/vnd.ms-excel"));
return new ResponseEntity<byte[]>(contentReturn, headers, HttpStatus.OK);
}
@RequestMapping(value = "/findCampaignTimeRangeMode", method = RequestMethod.GET)
public List<TimeRangeDialMode> findCampaignTimeRangeMode(@RequestParam Long campaignId, @RequestParam Long companySiteId) {
return timeRangeDialModeRepository.findTimeRangeDialModeByCampaignIdAndCompanySiteId(campaignId, companySiteId);
}
@RequestMapping(value = "/findCampaignTimeZoneMode", method = RequestMethod.GET)
public List<TimeZoneDialMode> findCampaignTimeZoneMode(@RequestParam Long campaignId, @RequestParam Long companySiteId) {
return timeZoneDialModeRepository.findTimeZoneDialModeByCampaignIdAndCompanySiteId(campaignId, companySiteId);
}
} }
...@@ -8,6 +8,13 @@ spring: ...@@ -8,6 +8,13 @@ spring:
url: jdbc:oracle:thin:@10.60.157.135:1521:vt url: jdbc:oracle:thin:@10.60.157.135:1521:vt
username: CCMS_FULL username: CCMS_FULL
password: CCMS_FULL#123 password: CCMS_FULL#123
max_pool_size: 32
datasource2:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@10.60.157.135:1521:vt
username: ACD_FULL
password: ACD_FULL#123
max_pool_size: 32
jpa: jpa:
database-platform: org.hibernate.dialect.Oracle10gDialect database-platform: org.hibernate.dialect.Oracle10gDialect
show-sql: true show-sql: true
......
...@@ -14,3 +14,28 @@ campaign.execute.interactive.contactStatus = Contact status ...@@ -14,3 +14,28 @@ campaign.execute.interactive.contactStatus = Contact status
campaign.execute.interactive.surveyStatus = Trạng thái khảo sát campaign.execute.interactive.surveyStatus = Trạng thái khảo sát
campaign.execute.interactive.status = Trạng thái chiến dịch campaign.execute.interactive.status = Trạng thái chiến dịch
campaign.execute.interactive.recordStatus = Trạng thái bản ghi campaign.execute.interactive.recordStatus = Trạng thái bản ghi
#Campaign
campaign = Campaigns
campaign.code = Campaign tode
campaign.name = Campaign tame
campaign.type = Campaign type
campaign.chanel = Chanel
campaign.startTime = Start time
campaign.endTime = End time
campaign.cusNum = Number of customers
campaign.joinedCusNum = Number of joined customers
campaign.interactedCusNum = Number of customers interacted
campaign.notInteractedCusNum = Number of customers not interacted
campaign.logCusNum = Number of locked customers
campaign.status = Status
campaign.chanel.1 = Voice chanel
campaign.chanel.2 = SMS chanel
campaign.chanel.3 = Email chanel
campaign.chanel.4 = IVR chanel
campaign.status.0 = Draft
campaign.status.1 = Prepare
campaign.status.2 = Deploy
campaign.status.3 = Pause
campaign.status.4 = Finish
campaign.status.5 = Kêt thúc sớm
...@@ -14,3 +14,32 @@ campaign.execute.interactive.contactStatus = Trạng thái kết nối ...@@ -14,3 +14,32 @@ campaign.execute.interactive.contactStatus = Trạng thái kết nối
campaign.execute.interactive.surveyStatus = Trạng thái khảo sát campaign.execute.interactive.surveyStatus = Trạng thái khảo sát
campaign.execute.interactive.status = Trạng thái chiến dịch campaign.execute.interactive.status = Trạng thái chiến dịch
campaign.execute.interactive.recordStatus = Trạng thái bản ghi campaign.execute.interactive.recordStatus = Trạng thái bản ghi
#Campaigns
campaign = Danh sách chiến dịch
campaign.title = DANH SÁCH CHIẾN DỊCH
campaign.code = Mã chiến dịch
campaign.name = Tên chiến dịch
campaign.type = Loại chiến dịch
campaign.chanel = Kênh
campaign.startTime = Thời gian bắt đầu
campaign.endTime = Thời gian kết thúc
campaign.cusNum = Số lượng khách hàng
campaign.joinedCusNum = Số lượng khách hàng tham gia
campaign.interactedCusNum = Số lượng khách hàng đã tương tác
campaign.notInteractedCusNum = Số lượng khách hàng chưa tương tác
campaign.logCusNum = Số lượng khách hàng DNC/Khoá
campaign.status = Trạng thái
campaign.chanel.1 = Kênh Voice
campaign.chanel.2 = Kênh SMS
campaign.chanel.3 = Kênh Email
campaign.chanel.4 = Kênh IVR
campaign.status.0 = Dự thảo
campaign.status.1 = Chuẩn bị
campaign.status.2 = Triển khai
campaign.status.3 = Tạm ngừng
campaign.status.4 = Kêt thúc
campaign.status.5 = Kêt thúc sớm
...@@ -11,7 +11,8 @@ SELECT ...@@ -11,7 +11,8 @@ SELECT
a.STATUS status, a.STATUS status,
a.CUSTOMER_NUMBER cusNum, a.CUSTOMER_NUMBER cusNum,
b.SLKHThamgiaCD numOfJoinedCus, b.SLKHThamgiaCD numOfJoinedCus,
c.SLKHChuaTuongTac numOfNotJoinedCus, e.SLKHDaTuongTac numOfInteractedCus,
c.SLKHChuaTuongTac numOfNotInteractedCus,
d.SLKHDoNotCall_Khoa numOfLockCus, d.SLKHDoNotCall_Khoa numOfLockCus,
a.COMPANY_SITE_ID companySiteId, a.COMPANY_SITE_ID companySiteId,
a.CONTENT content, a.CONTENT content,
...@@ -29,7 +30,7 @@ LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHThamgiaCD ...@@ -29,7 +30,7 @@ LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHThamgiaCD
ON a.CAMPAIGN_ID = b.CAMPAIGN_ID ON a.CAMPAIGN_ID = b.CAMPAIGN_ID
LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHChuaTuongTac LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHChuaTuongTac
FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID
WHERE 1 = 1 AND cc.STATUS <> 0 AND cus.STATUS = 1 WHERE 1 = 1 AND cc.STATUS = 0 AND cus.STATUS = 1
group by campaign_id) c group by campaign_id) c
ON c.CAMPAIGN_ID = a.CAMPAIGN_ID ON c.CAMPAIGN_ID = a.CAMPAIGN_ID
LEFT JOIN (SELECT cc.campaign_id, count(*) AS SLKHDoNotCall_Khoa LEFT JOIN (SELECT cc.campaign_id, count(*) AS SLKHDoNotCall_Khoa
...@@ -38,6 +39,11 @@ LEFT JOIN (SELECT cc.campaign_id, count(*) AS SLKHDoNotCall_Khoa ...@@ -38,6 +39,11 @@ LEFT JOIN (SELECT cc.campaign_id, count(*) AS SLKHDoNotCall_Khoa
AND (c.IPCC_STATUS = 'locked' or c.CALL_ALLOWED = 0) AND cc.STATUS = 1 AND (c.IPCC_STATUS = 'locked' or c.CALL_ALLOWED = 0) AND cc.STATUS = 1
GROUP BY cc.CAMPAIGN_ID) d GROUP BY cc.CAMPAIGN_ID) d
ON d.CAMPAIGN_ID = a.CAMPAIGN_ID ON d.CAMPAIGN_ID = a.CAMPAIGN_ID
LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHDaTuongTac
FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID
WHERE 1 = 1 AND cc.STATUS <> 0 AND cus.STATUS = 1
group by campaign_id) e
ON e.CAMPAIGN_ID = a.CAMPAIGN_ID
WHERE 1 = 1 WHERE 1 = 1
AND COMPANY_SITE_ID = :p_company_site_id AND COMPANY_SITE_ID = :p_company_site_id
AND a.STATUS <> -1 AND a.STATUS <> -1
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