Commit 897c8766 authored by Phạm Duy Phi's avatar Phạm Duy Phi

commit

parent d56c857c
package com.viettel.campaign; package com.viettel.campaign;
import com.viettel.campaign.config.DataSourceProperties;
import com.viettel.campaign.utils.Config; import com.viettel.campaign.utils.Config;
import com.viettel.campaign.utils.RedisUtil; import com.viettel.campaign.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication(scanBasePackages={"com.viettel.campaign"}) @SpringBootApplication(scanBasePackages={"com.viettel.campaign"})
@ComponentScan({"com.viettel"})
public class ServiceCampaignApplication { public class ServiceCampaignApplication {
@Autowired
DataSourceProperties dataSourceProperties;
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(ServiceCampaignApplication.class, args); SpringApplication.run(ServiceCampaignApplication.class, args);
......
...@@ -2,7 +2,6 @@ package com.viettel.campaign.config; ...@@ -2,7 +2,6 @@ package com.viettel.campaign.config;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*; import org.springframework.context.annotation.*;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
...@@ -12,7 +11,6 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; ...@@ -12,7 +11,6 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.PlatformTransactionManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.util.HashMap; import java.util.HashMap;
...@@ -31,30 +29,15 @@ public class ACDFullDatasourceConfig { ...@@ -31,30 +29,15 @@ public class ACDFullDatasourceConfig {
@Autowired @Autowired
private Environment env; private Environment env;
@Value("${datasource-property.acd-full.driver-class-name}") @Bean("datasource2.datasource")
private String driverClassName;
@Value("${datasource-property.acd-full.url}")
private String url;
@Value("${datasource-property.acd-full.max_pool_size}")
private Integer maxPoolSize;
@Value("${datasource-property.acd-full.password}")
private String password;
@Value("${datasource-property.acd-full.username}")
private String username;
@Bean("datasource.datasource2")
public DataSource dataSource(){ public DataSource dataSource(){
OracleDataSource r = new OracleDataSource(); OracleDataSource r = new OracleDataSource();
r.setDriverClassName(driverClassName); r.setDriverClassName(env.getProperty("spring.datasource2.driver-class-name"));
r.setPoolName("app.datasource2"); r.setPoolName("app.datasource2");
r.setJdbcUrl(url); r.setJdbcUrl(env.getProperty("spring.datasource2.url"));
r.setMaximumPoolSize(maxPoolSize); r.setMaximumPoolSize(env.getProperty("spring.datasource2.max_pool_size", Integer.class));
r.setPassword(password); r.setPassword(env.getProperty("spring.datasource2.password"));
r.setUsername(username); r.setUsername(env.getProperty("spring.datasource2.username"));
return r; return r;
} }
...@@ -86,8 +69,8 @@ public class ACDFullDatasourceConfig { ...@@ -86,8 +69,8 @@ public class ACDFullDatasourceConfig {
} }
@Bean(name = DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_ACD_FULL) @Bean(name = DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_ACD_FULL)
@DependsOn("datasource.datasource2") @DependsOn("datasource2.datasource")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource.datasource2") DataSource abcDataSource) { public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource2.datasource") DataSource abcDataSource) {
return new NamedParameterJdbcTemplate(abcDataSource); return new NamedParameterJdbcTemplate(abcDataSource);
} }
} }
......
...@@ -2,7 +2,6 @@ package com.viettel.campaign.config; ...@@ -2,7 +2,6 @@ package com.viettel.campaign.config;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
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.context.annotation.DependsOn; import org.springframework.context.annotation.DependsOn;
...@@ -33,30 +32,15 @@ public class CCMSFullDatasourceConfig { ...@@ -33,30 +32,15 @@ public class CCMSFullDatasourceConfig {
@Autowired @Autowired
private Environment env; private Environment env;
@Value("${datasource-property.ccms-full.driver-class-name}") @Bean("datasource1.datasource")
private String driverClassName;
@Value("${datasource-property.ccms-full.url}")
private String url;
@Value("${datasource-property.ccms-full.max_pool_size}")
private Integer maxPoolSize;
@Value("${datasource-property.ccms-full.password}")
private String password;
@Value("${datasource-property.ccms-full.username}")
private String username;
@Bean(name= "datasource.datasource1")
public DataSource dataSource(){ public DataSource dataSource(){
OracleDataSource r = new OracleDataSource(); OracleDataSource r = new OracleDataSource();
r.setDriverClassName(driverClassName); r.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
r.setPoolName("app.datasource1"); r.setPoolName("app.datasource1");
r.setJdbcUrl(url); r.setJdbcUrl(env.getProperty("spring.datasource.url"));
r.setMaximumPoolSize(maxPoolSize); r.setMaximumPoolSize(env.getProperty("spring.datasource.max_pool_size", Integer.class));
r.setPassword(password); r.setPassword(env.getProperty("spring.datasource.password"));
r.setUsername(username); r.setUsername(env.getProperty("spring.datasource.username"));
return r; return r;
} }
...@@ -88,8 +72,8 @@ public class CCMSFullDatasourceConfig { ...@@ -88,8 +72,8 @@ public class CCMSFullDatasourceConfig {
} }
@Bean(name = DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL) @Bean(name = DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL)
@DependsOn("datasource.datasource1") @DependsOn("datasource1.datasource")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource.datasource1") DataSource abcDataSource) { public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource1.datasource") DataSource abcDataSource) {
return new NamedParameterJdbcTemplate(abcDataSource); return new NamedParameterJdbcTemplate(abcDataSource);
} }
} }
package com.viettel.campaign.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @author anhvd_itsol
*/
@Component
@ConfigurationProperties(prefix = "datasource-property")
public class DataSourceProperties {
public static class CCMSFull{
private String driverClassName;
private String url;
private String username;
private String password;
private Integer maxPoolSize;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getMaxPoolSize() {
return maxPoolSize;
}
public void setMaxPoolSize(Integer maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
}
public static class ACDFull{
private String driverClassName;
private String url;
private String username;
private String password;
private Integer maxPoolSize;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getMaxPoolSize() {
return maxPoolSize;
}
public void setMaxPoolSize(Integer maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
}
}
...@@ -31,27 +31,27 @@ public class CorsFilter implements Filter { ...@@ -31,27 +31,27 @@ public class CorsFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) req; HttpServletRequest request = (HttpServletRequest) req;
chain.doFilter(req, resp); // chain.doFilter(req, resp);
// if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
// chain.doFilter(req, resp); chain.doFilter(req, resp);
// return; return;
// } }
// if ("/".equals(request.getRequestURI())) { if ("/".equals(request.getRequestURI())) {
// chain.doFilter(req, resp); chain.doFilter(req, resp);
// return; return;
// } }
// String xAuthToken = request.getHeader("X-Auth-Token"); String xAuthToken = request.getHeader("X-Auth-Token");
// if (xAuthToken == null || "".equals(xAuthToken)) { if (xAuthToken == null || "".equals(xAuthToken)) {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null."); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null.");
// return; return;
// } }
// Object obj = RedisUtil.getInstance().get(xAuthToken); Object obj = RedisUtil.getInstance().get(xAuthToken);
// if (obj instanceof UserSession) { if (obj instanceof UserSession) {
// chain.doFilter(req, resp); chain.doFilter(req, resp);
// } else { } else {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid."); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
// } }
} }
@Override @Override
......
package com.viettel.campaign.mapper;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.web.dto.CampaignAgentDTO;
public class CampaignAgentMapper extends BaseMapper<CampaignAgent, CampaignAgentDTO> {
@Override
public CampaignAgentDTO toDtoBean(CampaignAgent campaignAgent) {
CampaignAgentDTO obj = new CampaignAgentDTO();
obj.setAgentId(campaignAgent.getAgentId());
obj.setCampaignAgentId(campaignAgent.getCampaignAgentId());
obj.setCampaignId(campaignAgent.getCampaignId());
obj.setCompanySiteId(campaignAgent.getCompanySiteId());
obj.setFilterType(campaignAgent.getFilterType());
obj.setReSchedule(campaignAgent.getReSchedule());
obj.setStatus(campaignAgent.getStatus());
return obj;
}
@Override
public CampaignAgent toPersistenceBean(CampaignAgentDTO dtoBean) {
CampaignAgent obj = new CampaignAgent();
obj.setAgentId(dtoBean.getAgentId());
obj.setCampaignAgentId(dtoBean.getCampaignAgentId());
obj.setCampaignId(dtoBean.getCampaignId());
obj.setCompanySiteId(dtoBean.getCompanySiteId());
obj.setFilterType(dtoBean.getFilterType());
obj.setReSchedule(dtoBean.getReSchedule());
obj.setStatus(dtoBean.getStatus());
return obj;
}
}
...@@ -9,6 +9,8 @@ import org.springframework.data.repository.query.Param; ...@@ -9,6 +9,8 @@ import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository @Repository
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Long> { public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Long> {
...@@ -19,4 +21,8 @@ public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Lo ...@@ -19,4 +21,8 @@ public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Lo
@Modifying @Modifying
@Query("UPDATE CampaignAgent SET status = :status WHERE agentId = :agentId AND campaignId = :campaignId") @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); 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);
} }
...@@ -2,12 +2,8 @@ package com.viettel.campaign.repository.ccms_full; ...@@ -2,12 +2,8 @@ package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.ScenarioAnswer; import com.viettel.campaign.model.ccms_full.ScenarioAnswer;
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.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
*/ */
...@@ -15,13 +11,4 @@ import java.util.List; ...@@ -15,13 +11,4 @@ import java.util.List;
@Repository @Repository
public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer, Long> { 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; ...@@ -14,13 +14,11 @@ import java.util.List;
@Repository @Repository
public interface ScenarioQuestionRepository extends JpaRepository<ScenarioQuestion, Long> { 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") @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); 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") @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); Integer countDuplicateQuestionCode(@Param("code") String code, @Param("scenarioId") Long scenarioId, @Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
ScenarioQuestion findScenarioQuestionByScenarioQuestionId(Long scenarioQuestionId);
} }
...@@ -6,27 +6,16 @@ import com.viettel.campaign.repository.ccms_full.TimeRangeDialModeRepository; ...@@ -6,27 +6,16 @@ import com.viettel.campaign.repository.ccms_full.TimeRangeDialModeRepository;
import com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository; import com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository;
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.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.CampaignDTO; import com.viettel.campaign.web.dto.CampaignDTO;
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.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.hibernate.type.DateType;
import org.hibernate.type.LongType;
import org.hibernate.type.ShortType;
import org.hibernate.type.StringType;
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.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
...@@ -64,17 +53,18 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -64,17 +53,18 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
public List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType) { public List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType) {
List<ApParamDTO> list = new ArrayList<>(); List<ApParamDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
// String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-status"); String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-status");
StringBuilder sb = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(sql);
sb.append("select distinct COMPLETE_VALUE apParamId,");
sb.append(" COMPLETE_NAME parName");
sb.append(" from CAMPAIGN_COMPLETE_CODE");
sb.append(" where to_char(COMPLETE_TYPE) = :p_complete_type and STATUS = 1 and COMPANY_SITE_ID = :p_company_site_id");
try { try {
params.put("p_company_site_id", companySiteId); params.put("p_company_site_id", companySiteId);
params.put("p_complete_type", completeType); if (CONNECT_STATUS_TYPE_RE.equals(completeType)) {
list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(ApParamDTO.class)); params.put("p_complete_type", "1");
stringBuilder.append(" and COMPLETE_VALUE <> 1");
} else {
params.put("p_complete_type", completeType);
}
list = namedParameterJdbcTemplate.query(stringBuilder.toString(), params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} }
...@@ -85,19 +75,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -85,19 +75,10 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
public List<ApParamDTO> getComboCampaignType(String companySiteId) { public List<ApParamDTO> getComboCampaignType(String companySiteId) {
List<ApParamDTO> list = new ArrayList<>(); List<ApParamDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-campaign-type"); String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-campaign-type");
StringBuilder sb = new StringBuilder();
sb.append("select PAR_VALUE apParamId,");
sb.append(" PAR_NAME parName");
sb.append(" from AP_PARAM");
sb.append(" where PAR_TYPE = 'CAMPAIGN_TYPE'");
sb.append(" and COMPANY_SITE_ID = :p_company_site_id");
sb.append(" and IS_DELETE = 0");
try { try {
params.put("p_company_site_id", companySiteId); params.put("p_company_site_id", companySiteId);
list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(ApParamDTO.class)); list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} }
...@@ -108,214 +89,9 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -108,214 +89,9 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
public ResultDTO getInteractiveResult(CampaignRequestDTO dto) { public ResultDTO getInteractiveResult(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
List<ContactCustResultDTO> list = new ArrayList<>(); List<ContactCustResultDTO> list = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
// try {
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
// sb.append(sql);
StringBuilder sb = new StringBuilder();
sb.append(" select b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
sb.append(" a.status recordStatus,");
sb.append(" (a.end_time - a.start_call)*24*60 callTime");
sb.append(" from contact_cust_result a");
sb.append(" left join campaign b on a.campaign_id = b.campaign_id");
sb.append(" left join vsa_users c on a.agent_id = c.user_id");
sb.append(" left join customer d on a.customer_id = d.customer_id");
sb.append(" left join campaign_complete_code e on a.contact_status = e.complete_value");
sb.append(" left join campaign_complete_code f on a.call_status = e.complete_value");
sb.append(" left join campaign g on a.campaign_id = g.campaign_id");
sb.append(" where a.status <> 0");
sb.append(" and a.company_site_id = :p_company_site_id");
sb.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sb.append(" and a.duration_call >= :p_call_time_from");
sb.append(" and a.duration_call <= :p_call_time_to");
sb.append(" and b.campaign_type in (:p_list_compaign_type)");
sb.append(" and to_char(a.customer_id) like :p_customer_id");
sb.append(" and to_char(a.contact_status) in (:p_list_contact_status)");
sb.append(" and to_char(a.call_status) in (:p_list_survey_status)");
sb.append(" and to_char(a.status) in (:p_list_record_status)");
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
sb.append(" and a.phone_number like :p_phone_number");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
sb.append(" and b.campaign_code in (:p_list_campaign_id) ");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sb.append(" and upper(b.campaign_name) like :p_campaign_name");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sb.append(" and upper(c.user_name) like :p_user_name");
}
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", dto.getCompanySiteId());
query.setParameter("p_customer_id", "%" + dto.getCustomerId()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
query.setParameter("p_date_from", dto.getFromDate());
query.setParameter("p_date_to", dto.getToDate());
query.setParameterList("p_list_compaign_type", dto.getCampaignType().split(","));
query.setParameterList("p_list_contact_status", dto.getContactStatus().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().split(","));
query.setParameterList("p_list_record_status", dto.getRecordStatus().split(","));
query.setParameter("p_call_time_from", dto.getCallTimeFrom());
query.setParameter("p_call_time_to", dto.getCallTimeTo());
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(","));
}
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
query.setParameter("p_phone_number", "%" + dto.getPhoneNumber()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
query.setParameter("p_campaign_name", "%" + dto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
query.setParameter("p_user_name", "%" + dto.getAgentId().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new StringType());
query.addScalar("customerName", new StringType());
query.addScalar("createTime", new DateType());
query.addScalar("contactStatus", new StringType());
query.addScalar("surveyStatus", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("recordStatus", new ShortType());
query.addScalar("callTime", new LongType());
query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class));
int count = 0;
list = query.list();
if (list.size() > 0) {
count = list.size();
}
Pageable pageable = SQLBuilder.buildPageable(dto);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<ContactCustResultDTO> data = query.list();
for (ContactCustResultDTO contactCustResultDTO : data) {
if (!"AGENT".equals(dto.getRoleUser())) {
contactCustResultDTO.setEnableEdit(true);
} else {
if (contactCustResultDTO.getRecordStatus() == 2) {
contactCustResultDTO.setEnableEdit(true);
} else if (contactCustResultDTO.getRecordStatus() == 1 && isLower24Hour(contactCustResultDTO.getCreateTime())) {
contactCustResultDTO.setEnableEdit(true);
} else {
contactCustResultDTO.setEnableEdit(false);
}
}
}
Page<ContactCustResultDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
try { try {
// String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive"); String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
StringBuilder sql = new StringBuilder();
sb.append("with campaign_type_list as (");
sb.append(" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_compaign_type, ',') +1");
sb.append(" ),");
sb.append(" contact_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_contact_status, ',') +1");
sb.append(" ),");
sb.append(" survey_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_survey_status, ',') +1");
sb.append(" ),");
sb.append(" record_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_record_status, ',') +1");
sb.append(" ),");
sb.append(" campaign_id_list as (");
sb.append(" select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1");
sb.append(" ),");
sb.append(" data_temp as (");
sb.append(" select b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
sb.append(" a.status recordStatus,");
sb.append(" (a.end_time - a.start_call)*24*60 callTime");
sb.append(" from contact_cust_result a");
sb.append(" left join campaign b on a.campaign_id = b.campaign_id");
sb.append(" left join vsa_users c on a.agent_id = c.user_id");
sb.append(" left join customer d on a.customer_id = d.customer_id");
sb.append(" left join campaign_complete_code e on a.contact_status = e.complete_value");
sb.append(" left join campaign_complete_code f on a.call_status = e.complete_value");
sb.append(" left join campaign g on a.campaign_id = g.campaign_id");
sb.append(" where a.status <> 0");
sb.append(" and a.company_site_id = :p_company_site_id");
sb.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sb.append(" and a.duration_call >= :p_call_time_from");
sb.append(" and a.duration_call <= :p_call_time_to");
sb.append(" and to_char(a.customer_id) like '%'||:p_customer_id||'%'");
sb.append(" and b.campaign_type in (select campaign_type from campaign_type_list)");
sb.append(" and to_char(a.contact_status) in (select contact_status from contact_status_list)");
sb.append(" and to_char(a.call_status) in (select survey_status from survey_status_list)");
sb.append(" and to_char(a.status) in (select record_status from record_status_list)");
sb.append(" and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')");
sb.append(" and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))");
sb.append(" and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')");
sb.append(" and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')");
sb.append(" ),");
sb.append(" data as (");
sb.append(" select a.*, rownum row_ from data_temp a");
sb.append(" )");
sb.append(" select * from data");
sb.append(" where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))");
params.put("p_company_site_id", dto.getCompanySiteId()); params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_customer_id", dto.getCustomerId()); params.put("p_customer_id", dto.getCustomerId());
params.put("p_date_from", dto.getFromDate()); params.put("p_date_from", dto.getFromDate());
...@@ -332,7 +108,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -332,7 +108,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params.put("p_page_number", dto.getPage().toString()); params.put("p_page_number", dto.getPage().toString());
params.put("p_page_size", dto.getPageSize().toString()); params.put("p_page_size", dto.getPageSize().toString());
list = namedParameterJdbcTemplate.query(sql.toString(), params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class)); list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class));
resultDTO.setListData(list); resultDTO.setListData(list);
resultDTO.setTotalRow(list.size()); resultDTO.setTotalRow(list.size());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
...@@ -342,200 +118,16 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -342,200 +118,16 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally { } finally {
return resultDTO;
} }
// }
return resultDTO;
} }
@Override @Override
public List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto) { public List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto) {
List<ContactCustResultDTO> list = new ArrayList<>(); List<ContactCustResultDTO> list = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
// try {
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
//sb.append(sql);
StringBuilder sb = new StringBuilder();
sb.append("select b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
sb.append(" a.status recordStatus,");
sb.append(" (a.end_time - a.start_call)*24*60 callTime");
sb.append(" from contact_cust_result a");
sb.append(" left join campaign b on a.campaign_id = b.campaign_id");
sb.append(" left join vsa_users c on a.agent_id = c.user_id");
sb.append(" left join customer d on a.customer_id = d.customer_id");
sb.append(" left join campaign_complete_code e on a.contact_status = e.complete_value");
sb.append(" left join campaign_complete_code f on a.call_status = e.complete_value");
sb.append(" left join campaign g on a.campaign_id = g.campaign_id");
sb.append(" where a.status <> 0");
sb.append(" and a.company_site_id = :p_company_site_id");
sb.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sb.append(" and a.duration_call >= :p_call_time_from");
sb.append(" and a.duration_call <= :p_call_time_to");
sb.append(" and b.campaign_type in (:p_list_compaign_type)");
sb.append(" and to_char(a.customer_id) like :p_customer_id");
sb.append(" and to_char(a.contact_status) in (:p_list_contact_status)");
sb.append(" and to_char(a.call_status) in (:p_list_survey_status)");
sb.append(" and to_char(a.status) in (:p_list_record_status)");
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
sb.append(" and a.phone_number like :p_phone_number");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
sb.append(" and b.campaign_code in (:p_list_campaign_id) ");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sb.append(" and upper(b.campaign_name) like :p_campaign_name");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sb.append(" and upper(c.user_name) like :p_user_name");
}
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", dto.getCompanySiteId());
query.setParameter("p_customer_id", "%" + dto.getCustomerId()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
query.setParameter("p_date_from", dto.getFromDate());
query.setParameter("p_date_to", dto.getToDate());
query.setParameterList("p_list_compaign_type", dto.getCampaignType().split(","));
query.setParameterList("p_list_contact_status", dto.getContactStatus().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().split(","));
query.setParameterList("p_list_record_status", dto.getRecordStatus().split(","));
query.setParameter("p_call_time_from", dto.getCallTimeFrom());
query.setParameter("p_call_time_to", dto.getCallTimeTo());
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(","));
}
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
query.setParameter("p_phone_number", "%" + dto.getPhoneNumber()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
query.setParameter("p_campaign_name", "%" + dto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
query.setParameter("p_user_name", "%" + dto.getAgentId().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new StringType());
query.addScalar("customerName", new StringType());
query.addScalar("createTime", new DateType());
query.addScalar("contactStatus", new StringType());
query.addScalar("surveyStatus", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("recordStatus", new ShortType());
query.addScalar("callTime", new LongType());
query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class));
list = query.list();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
try { try {
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive"); String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder sb2 = new StringBuilder();
sb.append("with campaign_type_list as (");
sb.append(" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_compaign_type, ',') +1");
sb.append(" ),");
sb.append(" contact_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_contact_status, ',') +1");
sb.append(" ),");
sb.append(" survey_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_survey_status, ',') +1");
sb.append(" ),");
sb.append(" record_status_list as (");
sb.append(" select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_record_status, ',') +1");
sb.append(" ),");
sb.append(" campaign_id_list as (");
sb.append(" select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id");
sb.append(" from dual");
sb.append(" connect by level <= regexp_count(:p_list_campaign_id, ',') +1");
sb.append(" ),");
sb.append(" data_temp as (");
sb.append(" select b.campaign_code campaignCode,");
sb.append(" b.campaign_name campaignName,");
sb.append(" c.user_name userName,");
sb.append(" a.phone_number phoneNumber,");
sb.append(" d.name customerName,");
sb.append(" to_date(a.start_call, 'DD/MM/YYYY') startCall,");
sb.append(" e.complete_name contactStatus,");
sb.append(" f.complete_name surveyStatus,");
sb.append(" g.status status,");
sb.append(" a.status recordStatus,");
sb.append(" (a.end_time - a.start_call)*24*60 callTime");
sb.append(" from contact_cust_result a");
sb.append(" left join campaign b on a.campaign_id = b.campaign_id");
sb.append(" left join vsa_users c on a.agent_id = c.user_id");
sb.append(" left join customer d on a.customer_id = d.customer_id");
sb.append(" left join campaign_complete_code e on a.contact_status = e.complete_value");
sb.append(" left join campaign_complete_code f on a.call_status = e.complete_value");
sb.append(" left join campaign g on a.campaign_id = g.campaign_id");
sb.append(" where a.status <> 0");
sb.append(" and a.company_site_id = :p_company_site_id");
sb.append(" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')");
sb.append(" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')");
sb.append(" and a.duration_call >= :p_call_time_from");
sb.append(" and a.duration_call <= :p_call_time_to");
sb.append(" and to_char(a.customer_id) like '%'||:p_customer_id||'%'");
sb.append(" and b.campaign_type in (select campaign_type from campaign_type_list)");
sb.append(" and to_char(a.contact_status) in (select contact_status from contact_status_list)");
sb.append(" and to_char(a.call_status) in (select survey_status from survey_status_list)");
sb.append(" and to_char(a.status) in (select record_status from record_status_list)");
sb.append(" and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')");
sb.append(" and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))");
sb.append(" and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')");
sb.append(" and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')");
sb.append(" ),");
sb.append(" data as (");
sb.append(" select a.*, rownum row_ from data_temp a");
sb.append(" )");
sb.append(" select * from data");
sb.append(" where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))");
params.put("p_company_site_id", dto.getCompanySiteId()); params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_customer_id", dto.getCustomerId()); params.put("p_customer_id", dto.getCustomerId());
params.put("p_date_from", dto.getFromDate()); params.put("p_date_from", dto.getFromDate());
...@@ -552,7 +144,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -552,7 +144,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params.put("p_page_number", dto.getPage().toString()); params.put("p_page_number", dto.getPage().toString());
params.put("p_page_size", "0"); params.put("p_page_size", "0");
list = namedParameterJdbcTemplate.query(sb2.toString(), params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class)); list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ContactCustResultDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} finally { } finally {
......
...@@ -61,102 +61,51 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -61,102 +61,51 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return result; return result;
} }
try { try {
StringBuilder sb = new StringBuilder(); StringBuilder sqlStr = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-by-params"));
sb.append(" SELECT");
sb.append(" a.CAMPAIGN_ID campaignId,");
sb.append(" a.CAMPAIGN_CODE campaignCode,");
sb.append(" a.CAMPAIGN_NAME campaignName,");
sb.append(" a.CAMPAIGN_TYPE campaignType,");
sb.append(" (SELECT PAR_NAME FROM AP_PARAM WHERE STATUS = 1 AND PAR_TYPE = 'CAMPAIGN_TYPE' AND PAR_VALUE = a.CAMPAIGN_TYPE) campaignTypeName,");
sb.append(" a.CHANEL chanel,");
sb.append(" a.START_TIME startTime,");
sb.append(" a.END_TIME endTime,");
sb.append(" a.CUSTOMER_NUMBER customerNumber,");
sb.append(" a.STATUS status,");
sb.append(" a.CUSTOMER_NUMBER cusNum,");
sb.append(" b.SLKHThamgiaCD numOfJoinedCus,");
sb.append(" e.SLKHDaTuongTac numOfInteractedCus,");
sb.append(" c.SLKHChuaTuongTac numOfNotInteractedCus,");
sb.append(" d.SLKHDoNotCall_Khoa numOfLockCus,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.CONTENT content,");
sb.append(" a.MAX_RECALL maxRecall,");
sb.append(" a.RECALL_TYPE recallType,");
sb.append(" a.RECALL_DURATION recallDuration,");
sb.append(" a.CURRENT_TIME_MODE currentTimeMode,");
sb.append(" a.WRAPUP_TIME_CONNECT wrapupTimeConnect,");
sb.append(" a.WRAPUP_TIME_DISCONNECT wrapupTimeDisconnect");
sb.append(" FROM CAMPAIGN a");
sb.append(" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHThamgiaCD");
sb.append(" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID");
sb.append(" WHERE 1 = 1 AND cc.IN_CAMPAIGN_STATUS = 1 AND cus.STATUS = 1");
sb.append(" group by campaign_id) b");
sb.append(" ON a.CAMPAIGN_ID = b.CAMPAIGN_ID");
sb.append(" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHChuaTuongTac");
sb.append(" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID");
sb.append(" WHERE 1 = 1 AND cc.STATUS = 0 AND cus.STATUS = 1");
sb.append(" group by campaign_id) c");
sb.append(" ON c.CAMPAIGN_ID = a.CAMPAIGN_ID");
sb.append(" LEFT JOIN (SELECT cc.campaign_id, count(*) AS SLKHDoNotCall_Khoa");
sb.append(" FROM CAMPAIGN_CUSTOMER cc , CUSTOMER c");
sb.append(" WHERE cc.CUSTOMER_ID = c.CUSTOMER_ID");
sb.append(" AND (c.IPCC_STATUS = 'locked' or c.CALL_ALLOWED = 0) AND cc.STATUS = 1");
sb.append(" GROUP BY cc.CAMPAIGN_ID) d");
sb.append(" ON d.CAMPAIGN_ID = a.CAMPAIGN_ID");
sb.append(" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHDaTuongTac");
sb.append(" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID");
sb.append(" WHERE 1 = 1 AND cc.STATUS <> 0 AND cus.STATUS = 1");
sb.append(" group by campaign_id) e");
sb.append(" ON e.CAMPAIGN_ID = a.CAMPAIGN_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND a.STATUS <> -1");
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
sb.append(" AND a.CAMPAIGN_CODE IN (:p_code) "); sqlStr.append(" AND a.CAMPAIGN_CODE IN (:p_code) ");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) {
sb.append(" AND UPPER(a.CAMPAIGN_NAME) LIKE :p_name"); sqlStr.append(" AND UPPER(a.CAMPAIGN_NAME) LIKE :p_name");
} }
if (requestDto.getStatus() != null && requestDto.getStatus() >= 0) { if (requestDto.getStatus() != null && requestDto.getStatus() >= 0) {
sb.append(" AND a.STATUS = :p_status"); sqlStr.append(" AND a.STATUS = :p_status");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getFromDateFr())) { if (!DataUtil.isNullOrEmpty(requestDto.getFromDateFr())) {
sb.append(" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') >= :p_frDateFr"); sqlStr.append(" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') >= :p_frDateFr");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getToDateFr())) { if (!DataUtil.isNullOrEmpty(requestDto.getToDateFr())) {
sb.append(" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') <= :p_toDateFr"); sqlStr.append(" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') <= :p_toDateFr");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getFromDateTo())) { if (!DataUtil.isNullOrEmpty(requestDto.getFromDateTo())) {
sb.append(" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') >= :p_frDateTo"); sqlStr.append(" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') >= :p_frDateTo");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getToDateTo())) { if (!DataUtil.isNullOrEmpty(requestDto.getToDateTo())) {
sb.append(" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') <= :p_toDateTo"); sqlStr.append(" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') <= :p_toDateTo");
} }
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) { if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
sb.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr"); sqlStr.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr");
} }
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) { if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) {
sb.append(" AND a.CUSTOMER_NUMBER <= :p_cusNumTo"); sqlStr.append(" AND a.CUSTOMER_NUMBER <= :p_cusNumTo");
} }
if (!DataUtil.isNullOrEmpty(requestDto.getTypes())) { if (!DataUtil.isNullOrEmpty(requestDto.getTypes())) {
sb.append(" AND a.CAMPAIGN_TYPE IN (:p_type)"); sqlStr.append(" AND a.CAMPAIGN_TYPE IN (:p_type)");
} }
if (requestDto.getChanel() != null && !DataUtil.isNullOrZero(requestDto.getChanel())) { if (requestDto.getChanel() != null && !DataUtil.isNullOrZero(requestDto.getChanel())) {
sb.append(" AND a.CHANEL = :p_chanel"); sqlStr.append(" AND a.CHANEL = :p_chanel");
} }
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) { if (!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
sb.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr"); sqlStr.append(" AND a.CUSTOMER_NUMBER >= :p_cusNumFr");
} }
if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) { if (!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) {
sb.append(" AND a.CUSTOMER_NUMBER <= :p_cusNumTo"); sqlStr.append(" AND a.CUSTOMER_NUMBER <= :p_cusNumTo");
} }
sb.append(" ORDER BY a.START_TIME DESC "); sqlStr.append(" ORDER BY a.START_TIME DESC ");
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sqlStr.toString());
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
String[] lstCode = requestDto.getCampaignCode().split(","); String[] lstCode = requestDto.getCampaignCode().split(",");
query.setParameterList("p_code", lstCode); query.setParameterList("p_code", lstCode);
...@@ -231,7 +180,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -231,7 +180,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) { 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());
...@@ -240,7 +189,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -240,7 +189,7 @@ 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 { }else {
List<CampaignDTO> dataExport = query.list(); List<CampaignDTO> dataExport = query.list();
result.setData(dataExport); result.setData(dataExport);
} }
...@@ -271,8 +220,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -271,8 +220,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return result; return result;
} }
try { try {
StringBuilder sb = new StringBuilder(); StringBuilder sqlStr = new StringBuilder();
sb.append(" SELECT CAMPAIGN_ID campaignId, " + sqlStr.append(" SELECT CAMPAIGN_ID campaignId, " +
" CAMPAIGN_CODE campaignCode, " + " CAMPAIGN_CODE campaignCode, " +
" CAMPAIGN_NAME campaignName, " + " CAMPAIGN_NAME campaignName, " +
" START_TIME startTime," + " START_TIME startTime," +
...@@ -281,10 +230,10 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -281,10 +230,10 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
" FROM CAMPAIGN" + " FROM CAMPAIGN" +
" WHERE COMPANY_SITE_ID = :p_company_site_id AND STATUS <> -1 "); " WHERE COMPANY_SITE_ID = :p_company_site_id AND STATUS <> -1 ");
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
sb.append(" AND CAMPAIGN_CODE LIKE :p_code "); sqlStr.append(" AND CAMPAIGN_CODE LIKE :p_code ");
} }
sb.append(" ORDER BY START_TIME DESC "); sqlStr.append(" ORDER BY START_TIME DESC ");
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sqlStr.toString());
query.setParameter("p_company_site_id", requestDto.getCompanySiteId()); query.setParameter("p_company_site_id", requestDto.getCompanySiteId());
if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { if (!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) {
query.setParameter("p_code", "%" + query.setParameter("p_code", "%" +
...@@ -336,19 +285,11 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -336,19 +285,11 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
session.beginTransaction(); session.beginTransaction();
try { try {
//StringBuilder sb = new StringBuilder(); StringBuilder sqlStr = new StringBuilder();
//sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-max-campaign-code-index")); sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-max-campaign-code-index"));
StringBuilder sb = new StringBuilder(); SQLQuery query = session.createSQLQuery(sqlStr.toString());
sb.append("SELECT CASE WHEN");
sb.append(" (SELECT COUNT(1) FROM CAMPAIGN) > 0");
sb.append(" THEN (SELECT SUBSTR((SELECT CAMPAIGN_CODE FROM CAMPAIGN WHERE CAMPAIGN_ID = (SELECT MAX(CAMPAIGN_ID) FROM CAMPAIGN)),");
sb.append(" INSTR((SELECT CAMPAIGN_CODE FROM CAMPAIGN WHERE CAMPAIGN_ID = (SELECT MAX(CAMPAIGN_ID) FROM CAMPAIGN)), '_', -1, 1 )+1) FROM DUAL)");
sb.append(" ELSE '0'");
sb.append(" END FROM DUAL");
SQLQuery query = session.createSQLQuery(sb.toString());
List<String> list = query.list(); List<String> list = query.list();
if (list.size() > 0) { if(list.size() > 0) {
return list.get(0); return list.get(0);
} }
} catch (Exception ex) { } catch (Exception ex) {
...@@ -361,7 +302,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -361,7 +302,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
public ResultDTO checkAllowStatusToPrepare(Long campaignId) { public ResultDTO checkAllowStatusToPrepare(Long campaignId) {
logger.info("Start check allow campaign status to prepare::"); logger.info("Start check allow campaign status to prepare::");
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
if (DataUtil.isNullOrZero(campaignId)) { if(DataUtil.isNullOrZero(campaignId)) {
result.setErrorCode(Constants.ApiErrorCode.ERROR); result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR); result.setDescription(Constants.ApiErrorDesc.ERROR);
return result; return result;
...@@ -369,52 +310,71 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -369,52 +310,71 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
try { try {
// StringBuilder sb = new StringBuilder(); StringBuilder sqlStr = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "check-allow-campaign-status-to-prepare")); sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "check-allow-campaign-status-to-prepare"));
StringBuilder sb = new StringBuilder(); SQLQuery query = session.createSQLQuery(sqlStr.toString());
sb.append(" WITH COUNT_LIST AS (SELECT (SELECT COUNT(1) FROM CAMPAIGN_CUSTOMER WHERE CAMPAIGN_ID = :p_campaignId) countCamp,");
sb.append(" (SELECT COUNT(1) FROM CAMPAIGN_AGENT WHERE CAMPAIGN_ID = :p_campaignId) countAgent,");
sb.append(" (select COUNT(1)");
sb.append(" FROM SCENARIO s");
sb.append(" INNER JOIN SCENARIO_QUESTION sq ON s.SCENARIO_ID = sq.SCENARIO_ID");
sb.append(" INNER JOIN SCENARIO_ANSWER sa ON sq.SCENARIO_QUESTION_ID = sa.SCENARIO_QUESTION_ID");
sb.append(" WHERE s.CAMPAIGN_ID = :p_campaignId) countScenario");
sb.append(" FROM DUAL)");
sb.append(" SELECT c.countCamp countCamp,");
sb.append(" c.countAgent countAgent,");
sb.append(" c.countScenario countScenario,");
sb.append(" CASE");
sb.append(" WHEN (c.countCamp IS NOT NULL AND c.countAgent IS NOT NULL AND c.countScenario IS NOT NULL) THEN '00'");
sb.append(" ELSE '01' END as code");
sb.append(" FROM COUNT_LIST c");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_campaignId", campaignId); query.setParameter("p_campaignId", campaignId);
List<Object[]> list = query.list(); List<Object[]> list = query.list();
if (list.size() > 0) { if(list.size() > 0) {
result.setData(list.get(0)); result.setData(list.get(0));
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) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
result.setErrorCode(Constants.ApiErrorCode.ERROR); result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR); result.setDescription(Constants.ApiErrorDesc.ERROR);
} finally { }finally {
session.close(); session.close();
} }
return result; return result;
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findCustomerListReallocation(CampaignRequestDTO dto) { public ResultDTO findCustomerListReallocation(CampaignRequestDTO dto) {
return null; ResultDTO resultDTO = new ResultDTO();
List<CustomerCustomDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>();
try {
String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-list-customer-reallocation");
params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_campaign_id", dto.getCampaignId());
params.put("p_list_connect_status", dto.getConnectStatus());
params.put("p_page_size", dto.getPageSize().toString());
params.put("p_page_number", dto.getPage().toString());
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(CustomerCustomDTO.class));
resultDTO.setListData(list);
resultDTO.setTotalRow(list.size());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
logger.error(e.getMessage(), e);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
} }
@Override @Override
public ResultDTO reallocationCustomer(CampaignRequestDTO dto) { public ResultDTO reallocationCustomer(CampaignRequestDTO dto) {
return null; ResultDTO resultDTO = new ResultDTO();
try {
List<CustomerCustomDTO> list = dto.getCustomerCustomDTOList();
for (CustomerCustomDTO customerCustomDTO: list) {
CampaignCustomer campaignCustomer = entityManager.find(CampaignCustomer.class, customerCustomDTO.getCampaignCustomerId());
campaignCustomer.setStatus((short) 0);
campaignCustomer.setCallStatus(null);
campaignCustomer.setRedistribute((short) 1);
}
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
logger.error(e.getMessage(), e);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
} }
} }
...@@ -32,30 +32,9 @@ public class UserActionLogRepositoryImpl implements UserActionLogRepositoryCusto ...@@ -32,30 +32,9 @@ public class UserActionLogRepositoryImpl implements UserActionLogRepositoryCusto
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
session.beginTransaction(); session.beginTransaction();
try{ try{
// StringBuilder sqlStr = new StringBuilder(); StringBuilder sqlStr = new StringBuilder();
// sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "insert-to-user-action-log")); sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "insert-to-user-action-log"));
StringBuilder sb = new StringBuilder(); SQLQuery query = session.createSQLQuery(sqlStr.toString());
sb.append("INSERT INTO \"CCMS_FULL\".\"USER_ACTION_LOG\" (");
sb.append(" AGENT_ID,");
sb.append(" COMPANY_SITE_ID,");
sb.append(" SESSION_ID,");
sb.append(" START_TIME,");
sb.append(" END_TIME,");
sb.append(" ACTION_TYPE,");
sb.append(" DESCRIPTION,");
sb.append(" OBJECT_ID)");
sb.append(" VALUES (");
sb.append(" :par_agentId,");
sb.append(" :par_companySiteId,");
sb.append(" :par_sessionId,");
sb.append(" :par_startTime,");
sb.append(" null,");
sb.append(" :par_actionType,");
sb.append(" null,");
sb.append(" :par_objectId)");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("par_agentId", userActionLogDTO.getAgentId() == null ? "" : userActionLogDTO.getAgentId()); query.setParameter("par_agentId", userActionLogDTO.getAgentId() == null ? "" : userActionLogDTO.getAgentId());
query.setParameter("par_companySiteId", userActionLogDTO.getCompanySiteId()); query.setParameter("par_companySiteId", userActionLogDTO.getCompanySiteId());
query.setParameter("par_sessionId", userActionLogDTO.getSessionId()); query.setParameter("par_sessionId", userActionLogDTO.getSessionId());
......
package com.viettel.campaign.service; 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.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignAgentRequestDTO;
import java.util.List;
public interface AgentsService { public interface AgentsService {
ResultDTO getAgentsByAgentId(String agentId); 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);
} }
...@@ -26,6 +26,8 @@ public interface CustomerService { ...@@ -26,6 +26,8 @@ public interface CustomerService {
ResultDTO deleteIds(CustomerRequestDTO customerRequestDTO); ResultDTO deleteIds(CustomerRequestDTO customerRequestDTO);
ResultDTO getCustomerDetailById(Long companySiteId, Long customerListId, Long customerId);
// ------------ customer list ------------ // // ------------ customer list ------------ //
ResultDTO getAllCustomerList(int page, int pageSize, String sort, Long companySiteId); ResultDTO getAllCustomerList(int page, int pageSize, String sort, Long companySiteId);
......
package com.viettel.campaign.service; package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
*/ */
public interface ScenarioAnswerService { 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 { ...@@ -15,6 +15,4 @@ public interface ScenarioQuestionService {
Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId); Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId);
Integer countDuplicateQuestionCode(String code, Long scenarioId, Long campaignId, Long companySiteId); Integer countDuplicateQuestionCode(String code, Long scenarioId, Long campaignId, Long companySiteId);
ResultDTO delete(ScenarioQuestionDTO scenarioQuestionDTO);
} }
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.mapper.CampaignAgentsMapper; import com.viettel.campaign.mapper.CampaignAgentMapper;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.acd_full.Agents; import com.viettel.campaign.model.acd_full.Agents;
import com.viettel.campaign.model.ccms_full.CampaignAgent; import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.repository.acd_full.AgentsRepository; import com.viettel.campaign.repository.acd_full.AgentsRepository;
import com.viettel.campaign.repository.ccms_full.CampaignAgentsRepository; import com.viettel.campaign.repository.ccms_full.CampaignAgentRepository;
import com.viettel.campaign.service.AgentsService; import com.viettel.campaign.service.AgentsService;
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;
import com.viettel.campaign.utils.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
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.ResultDTO;
import com.viettel.campaign.web.dto.VSAUsersDTO; import com.viettel.campaign.web.dto.VSAUsersDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignAgentRequestDTO;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
...@@ -24,6 +25,7 @@ import org.springframework.data.domain.*; ...@@ -24,6 +25,7 @@ import org.springframework.data.domain.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
...@@ -33,7 +35,7 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -33,7 +35,7 @@ public class AgentsServiceImpl implements AgentsService {
AgentsRepository agentsRepository; AgentsRepository agentsRepository;
@Autowired @Autowired
CampaignAgentsRepository campaignAgentsRepository; CampaignAgentRepository campaignAgentRepository;
@Override @Override
public ResultDTO getAgentsByAgentId(String agentId) { public ResultDTO getAgentsByAgentId(String agentId) {
...@@ -60,7 +62,7 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -60,7 +62,7 @@ public class AgentsServiceImpl implements AgentsService {
@Override @Override
@Transactional(DataSourceQualify.ACD_FULL) @Transactional(DataSourceQualify.ACD_FULL)
public ResultDTO getAllAgentsByCompanySiteId(int page, int pageSize, Long companySiteId) { public ResultDTO getAllAgentByCompanySiteId(int page, int pageSize, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
...@@ -74,47 +76,16 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -74,47 +76,16 @@ public class AgentsServiceImpl implements AgentsService {
} }
try { try {
// StringBuilder sb = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
StringBuilder sb = new StringBuilder(); sqlStrBuilder.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sqlStrBuilder.append(" WHERE 1 = 1");
sb.append("SELECT"); sqlStrBuilder.append(" AND a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" a.USER_ID userId,"); sqlStrBuilder.append(" AND b.CAMPAIGN_AGENT_ID IS NULL");
sb.append(" a.USER_NAME userName,"); sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC");
sb.append(" a.STATUS status,");
sb.append(" a.FULL_NAME fullName,"); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
sb.append(" a.USER_TYPE_ID userTypeId,");
sb.append(" a.CREATE_DATE createDate,");
sb.append(" a.DESCRIPTION description,");
sb.append(" a.STAFF_CODE staffCode,");
sb.append(" a.MANAGER_ID managerId,");
sb.append(" a.LOCATION_ID locationId,");
sb.append(" a.DEPT_ID deptId,");
sb.append(" a.DEPT_LEVEL deptLevel,");
sb.append(" a.POS_ID posId,");
sb.append(" a.DEPT_NAME deptName,");
sb.append(" a.GROUP_ID groupId,");
sb.append(" a.SITE_ID siteId,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.AGENT_TYPE agentType,");
sb.append(" a.MOBILE_NUMBER mobileNumber,");
sb.append(" a.FACEBOOK_ID facebookId,");
sb.append(" a.LOGIN_TYPE loginType,");
sb.append(" a.GOOGLE_ID googleId,");
sb.append(" a.EMAIL email,");
sb.append(" a.AVAILABLE_TICKET availableTicket,");
sb.append(" a.USER_KAZOO_ID userKazooId,");
sb.append(" b.FILTER_TYPE filterType");
sb.append(" FROM VSA_USERS a");
sb.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND b.AGENT_ID IS NULL");
sb.append(" ORDER BY a.FULL_NAME ASC");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
...@@ -122,28 +93,29 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -122,28 +93,29 @@ public class AgentsServiceImpl implements AgentsService {
query.addScalar("userName", new StringType()); query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType()); query.addScalar("fullName", new StringType());
query.addScalar("userTypeId", new LongType()); // query.addScalar("userTypeId", new LongType());
query.addScalar("createDate", new DateType()); // query.addScalar("createDate", new DateType());
query.addScalar("description", new StringType()); // query.addScalar("description", new StringType());
query.addScalar("staffCode", new StringType()); // query.addScalar("staffCode", new StringType());
query.addScalar("managerId", new LongType()); // query.addScalar("managerId", new LongType());
query.addScalar("locationId", new LongType()); // query.addScalar("locationId", new LongType());
query.addScalar("deptId", new LongType()); // query.addScalar("deptId", new LongType());
query.addScalar("deptLevel", new StringType()); // query.addScalar("deptLevel", new StringType());
query.addScalar("posId", new LongType()); // query.addScalar("posId", new LongType());
query.addScalar("deptName", new StringType()); // query.addScalar("deptName", new StringType());
query.addScalar("groupId", new LongType()); // query.addScalar("groupId", new LongType());
query.addScalar("siteId", new LongType()); // query.addScalar("siteId", new LongType());
query.addScalar("companySiteId", new LongType()); query.addScalar("companySiteId", new LongType());
query.addScalar("agentType", new ShortType()); // query.addScalar("agentType", new ShortType());
query.addScalar("mobileNumber", new StringType()); // query.addScalar("mobileNumber", new StringType());
query.addScalar("facebookId", new StringType()); // query.addScalar("facebookId", new StringType());
query.addScalar("loginType", new ShortType()); // query.addScalar("loginType", new ShortType());
query.addScalar("googleId", new StringType()); // query.addScalar("googleId", new StringType());
query.addScalar("email", new StringType()); // query.addScalar("email", new StringType());
query.addScalar("availableTicket", new LongType()); // query.addScalar("availableTicket", new LongType());
query.addScalar("userKazooId", new StringType()); // query.addScalar("userKazooId", new StringType());
query.addScalar("filterType", new ShortType()); query.addScalar("filterType", new ShortType());
query.addScalar("campaignAgentId", new LongType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class)); query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
int count = 0; int count = 0;
...@@ -174,7 +146,7 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -174,7 +146,7 @@ public class AgentsServiceImpl implements AgentsService {
} }
@Override @Override
public ResultDTO getAllAgentsSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId) { public ResultDTO getAllAgentSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
...@@ -188,46 +160,16 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -188,46 +160,16 @@ public class AgentsServiceImpl implements AgentsService {
} }
try { try {
// StringBuilder sb = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(" RIGHT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sb.append("SELECT"); sqlStrBuilder.append(" WHERE 1 = 1");
sb.append(" a.USER_ID userId,"); sqlStrBuilder.append(" AND b.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" a.USER_NAME userName,"); sqlStrBuilder.append(" AND b.CAMPAIGN_ID = :p_campaign_id");
sb.append(" a.STATUS status,"); sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC");
sb.append(" a.FULL_NAME fullName,");
sb.append(" a.USER_TYPE_ID userTypeId,"); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
sb.append(" a.CREATE_DATE createDate,");
sb.append(" a.DESCRIPTION description,");
sb.append(" a.STAFF_CODE staffCode,");
sb.append(" a.MANAGER_ID managerId,");
sb.append(" a.LOCATION_ID locationId,");
sb.append(" a.DEPT_ID deptId,");
sb.append(" a.DEPT_LEVEL deptLevel,");
sb.append(" a.POS_ID posId,");
sb.append(" a.DEPT_NAME deptName,");
sb.append(" a.GROUP_ID groupId,");
sb.append(" a.SITE_ID siteId,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.AGENT_TYPE agentType,");
sb.append(" a.MOBILE_NUMBER mobileNumber,");
sb.append(" a.FACEBOOK_ID facebookId,");
sb.append(" a.LOGIN_TYPE loginType,");
sb.append(" a.GOOGLE_ID googleId,");
sb.append(" a.EMAIL email,");
sb.append(" a.AVAILABLE_TICKET availableTicket,");
sb.append(" a.USER_KAZOO_ID userKazooId,");
sb.append(" b.FILTER_TYPE filterType");
sb.append(" FROM VSA_USERS a");
sb.append(" RIGHT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND b.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND b.CAMPAIGN_ID = :p_campaign_id");
sb.append(" ORDER BY a.FULL_NAME ASC");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_campaign_id", campaignId); query.setParameter("p_campaign_id", campaignId);
...@@ -236,28 +178,29 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -236,28 +178,29 @@ public class AgentsServiceImpl implements AgentsService {
query.addScalar("userName", new StringType()); query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType()); query.addScalar("fullName", new StringType());
query.addScalar("userTypeId", new LongType()); // query.addScalar("userTypeId", new LongType());
query.addScalar("createDate", new DateType()); // query.addScalar("createDate", new DateType());
query.addScalar("description", new StringType()); // query.addScalar("description", new StringType());
query.addScalar("staffCode", new StringType()); // query.addScalar("staffCode", new StringType());
query.addScalar("managerId", new LongType()); // query.addScalar("managerId", new LongType());
query.addScalar("locationId", new LongType()); // query.addScalar("locationId", new LongType());
query.addScalar("deptId", new LongType()); // query.addScalar("deptId", new LongType());
query.addScalar("deptLevel", new StringType()); // query.addScalar("deptLevel", new StringType());
query.addScalar("posId", new LongType()); // query.addScalar("posId", new LongType());
query.addScalar("deptName", new StringType()); // query.addScalar("deptName", new StringType());
query.addScalar("groupId", new LongType()); // query.addScalar("groupId", new LongType());
query.addScalar("siteId", new LongType()); // query.addScalar("siteId", new LongType());
query.addScalar("companySiteId", new LongType()); query.addScalar("companySiteId", new LongType());
query.addScalar("agentType", new ShortType()); // query.addScalar("agentType", new ShortType());
query.addScalar("mobileNumber", new StringType()); // query.addScalar("mobileNumber", new StringType());
query.addScalar("facebookId", new StringType()); // query.addScalar("facebookId", new StringType());
query.addScalar("loginType", new ShortType()); // query.addScalar("loginType", new ShortType());
query.addScalar("googleId", new StringType()); // query.addScalar("googleId", new StringType());
query.addScalar("email", new StringType()); // query.addScalar("email", new StringType());
query.addScalar("availableTicket", new LongType()); // query.addScalar("availableTicket", new LongType());
query.addScalar("userKazooId", new StringType()); // query.addScalar("userKazooId", new StringType());
query.addScalar("filterType", new ShortType()); query.addScalar("filterType", new ShortType());
query.addScalar("campaignAgentId", new LongType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class)); query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
int count = 0; int count = 0;
...@@ -288,15 +231,187 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -288,15 +231,187 @@ public class AgentsServiceImpl implements AgentsService {
} }
@Override @Override
public ResultDTO createCampaignAgents(CampaignAgentsDTO campaignAgentsDTO) { public ResultDTO createCampaignAgent(CampaignAgentDTO campaignAgentDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CampaignAgentsMapper campaignAgentsMapper = new CampaignAgentsMapper(); CampaignAgentMapper campaignAgentMapper = new CampaignAgentMapper();
CampaignAgent campaignAgent = new CampaignAgent(); CampaignAgent campaignAgent = new CampaignAgent();
try { try {
if (campaignAgentsDTO != null) { if (campaignAgentDTO != null) {
// insert
campaignAgent = campaignAgentMapper.toPersistenceBean(campaignAgentDTO);
campaignAgentRepository.save(campaignAgent);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
e.printStackTrace();
}
return resultDTO;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteCampaignAgentById(List<Long> campaignAgentId) {
ResultDTO resultDTO = new ResultDTO();
try {
if (campaignAgentId.size() > 0) {
// delete
campaignAgentRepository.deleteCampaignAgent(campaignAgentId);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
e.printStackTrace();
}
return resultDTO;
}
@Override
public ResultDTO searchCampaignAgentByName(int page, int pageSize, Long companySiteId, String userName, String fullName) {
ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
if (DataUtil.isNullOrZero(companySiteId)) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
sqlStrBuilder.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sqlStrBuilder.append(" JOIN USER_ROLE c on a.USER_ID = c.USER_ID");
sqlStrBuilder.append(" JOIN ROLE d on c.ROLE_ID = d.ROLE_ID");
sqlStrBuilder.append(" WHERE 1 = 1");
sqlStrBuilder.append(" AND a.COMPANY_SITE_ID = :p_company_site_id");
if (!DataUtil.isNullOrEmpty(userName)) {
sqlStrBuilder.append(" AND UPPER(a.USER_NAME) LIKE UPPER(:p_user_name)");
}
if (!DataUtil.isNullOrEmpty(fullName)) {
sqlStrBuilder.append(" AND UPPER(a.FULL_NAME) LIKE UPPER(:p_full_name)");
}
sqlStrBuilder.append(" AND d.ROLE_CODE IN ('AGENT', 'SUPERVISOR')");
sqlStrBuilder.append(" AND a.STATUS = 1");
sqlStrBuilder.append(" AND b.CAMPAIGN_AGENT_ID IS NULL");
sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
if (!DataUtil.isNullOrEmpty(userName)) {
query.setParameter("p_user_name", "%" +
userName
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(fullName)) {
query.setParameter("p_full_name", "%" +
fullName
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
query.addScalar("userId", new LongType());
query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType());
// query.addScalar("userTypeId", new LongType());
// query.addScalar("createDate", new DateType());
// query.addScalar("description", new StringType());
// query.addScalar("staffCode", new StringType());
// query.addScalar("managerId", new LongType());
// query.addScalar("locationId", new LongType());
// query.addScalar("deptId", new LongType());
// query.addScalar("deptLevel", new StringType());
// query.addScalar("posId", new LongType());
// query.addScalar("deptName", new StringType());
// query.addScalar("groupId", new LongType());
// query.addScalar("siteId", new LongType());
query.addScalar("companySiteId", new LongType());
// query.addScalar("agentType", new ShortType());
// query.addScalar("mobileNumber", new StringType());
// query.addScalar("facebookId", new StringType());
// query.addScalar("loginType", new ShortType());
// query.addScalar("googleId", new StringType());
// query.addScalar("email", new StringType());
// query.addScalar("availableTicket", new LongType());
// query.addScalar("userKazooId", new StringType());
query.addScalar("filterType", new ShortType());
query.addScalar("campaignAgentId", new LongType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
int count = 0;
List<VSAUsersDTO> dtoList = query.list();
if (dtoList.size() > 0) {
count = query.list().size();
}
Pageable pageable = PageRequest.of(page, pageSize);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<VSAUsersDTO> data = query.list();
Page<VSAUsersDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally {
session.close();
}
return resultDTO;
}
@Override
public ResultDTO createMultipleCampaignAgent(CampaignAgentRequestDTO campaignAgentRequestDTO) {
ResultDTO resultDTO = new ResultDTO();
// CampaignAgentMapper campaignAgentsMapper = new CampaignAgentMapper();
List<CampaignAgent> campaignAgentList = new ArrayList<>();
try {
if (campaignAgentRequestDTO != null) {
for (int i = 0; i < campaignAgentRequestDTO.getAgentId().size(); i++) {
CampaignAgent campaignAgent = new CampaignAgent();
campaignAgent.setAgentId(campaignAgentRequestDTO.getAgentId().get(i));
campaignAgent.setStatus(0);
campaignAgent.setReSchedule(0L);
campaignAgent.setFilterType((short) 0);
campaignAgent.setCompanySiteId(campaignAgentRequestDTO.getCompanySiteId());
campaignAgent.setCampaignId(campaignAgentRequestDTO.getCampaignId());
campaignAgentList.add(campaignAgent);
}
// insert // insert
campaignAgent = campaignAgentsMapper.toPersistenceBean(campaignAgentsDTO); // campaignAgent = campaignAgentsMapper.toPersistenceBean();
campaignAgentsRepository.save(campaignAgent); campaignAgentRepository.saveAll(campaignAgentList);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
......
...@@ -54,36 +54,10 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -54,36 +54,10 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
try { try {
// StringBuilder sqlStrBuilder = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "findAll-CampaignCompleteCode")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "findAll-CampaignCompleteCode"));
StringBuilder sb = new StringBuilder(); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
sb.append("SELECT");
sb.append(" CAMPAIGN_COMPLETE_CODE_ID campaignCompleteCodeId,");
sb.append(" IS_RECALL isRecall ,");
sb.append(" CAMPAIGN_ID campaignId,");
sb.append(" COMPLETE_VALUE completeValue,");
sb.append(" COMPLETE_NAME completeName,");
sb.append(" COMPLETE_TYPE completeType,");
sb.append(" CAMPAIGN_TYPE campaignType,");
sb.append(" DESCRIPTION description,");
sb.append(" STATUS status,");
sb.append(" COMPANY_SITE_ID companySiteId,");
sb.append(" UPDATE_BY updateBy ,");
sb.append(" UPDATE_AT updateAt,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_AT createAt,");
sb.append(" IS_FINISH isFinish,");
sb.append(" IS_LOCK isLock,");
sb.append(" DURATION_LOCK durationLock,");
sb.append(" CHANEL chanel");
sb.append(" FROM CAMPAIGN_COMPLETE_CODE");
sb.append(" where 1 = 1");
sb.append(" AND STATUS = 1");
sb.append(" and COMPANY_SITE_ID = :p_company_site_id");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
...@@ -284,11 +258,8 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -284,11 +258,8 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
try { try {
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "get-max-value-completevalue"));
StringBuilder sqlStrBuilder = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "get-max-value-completevalue"));
sqlStrBuilder.append("SELECT max(to_number(COMPLETE_VALUE)) completeValue, COMPANY_SITE_ID companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id GROUP BY COMPANY_SITE_ID");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_site_id", completeCodeDTO.getCompanySiteId()); query.setParameter("p_site_id", completeCodeDTO.getCompanySiteId());
...@@ -370,31 +341,10 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -370,31 +341,10 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
} }
try { try {
// StringBuilder sqlStrBuilder = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG,"findCampaignCodeById")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG,"findCampaignCodeById"));
StringBuilder sb = new StringBuilder();
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
sb.append("SELECT CAMPAIGN_COMPLETE_CODE_ID campaignCompleteCodeId,");
sb.append(" IS_RECALL isRecall ,");
sb.append(" CAMPAIGN_ID campaignId,");
sb.append(" COMPLETE_VALUE completeValue,");
sb.append(" COMPLETE_NAME completeName,");
sb.append(" COMPLETE_TYPE completeType,");
sb.append(" CAMPAIGN_TYPE campaignType,");
sb.append(" DESCRIPTION description,");
sb.append(" STATUS status,");
sb.append(" COMPANY_SITE_ID companySiteId,");
sb.append(" UPDATE_BY updateBy ,");
sb.append(" UPDATE_AT updateAt,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_AT createAt,");
sb.append(" IS_FINISH isFinish,");
sb.append(" IS_LOCK isLock,");
sb.append(" DURATION_LOCK durationLock,");
sb.append(" CHANEL chanel");
sb.append(" from CAMPAIGN_COMPLETE_CODE WHERE CAMPAIGN_COMPLETE_CODE_ID=:p_campaignComleteCode");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_campaignComleteCode",campaignCompleteCodeId); query.setParameter("p_campaignComleteCode",campaignCompleteCodeId);
......
...@@ -286,136 +286,27 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -286,136 +286,27 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId())); //TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId()));
List<CampaignCustomerDTO> lst = new ArrayList<>(); List<CampaignCustomerDTO> lst = new ArrayList<>();
// Khách hàng đến thời điểm hẹn gọi lại và là khách hàng mà chính NSD hẹn gọi lại // Khách hàng đến thời điểm hẹn gọi lại và là khách hàng mà chính NSD hẹn gọi lại
StringBuilder sb = new StringBuilder(); List<CampaignCustomerDTO> lst1 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer1"));
sb.append("SELECT CC.CUSTOMER_ID AS customerId");
sb.append(" FROM CAMPAIGN_CUSTOMER CC");
sb.append(" LEFT JOIN CCMS_FULL.RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID");
sb.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
sb.append(" AND CC.COMPANY_SITE_ID = :companySiteId");
sb.append(" AND CC.IN_CAMPAIGN_STATUS = 1");
sb.append(" AND CL.CUSTOMER_ID IS NULL");
sb.append(" AND CL.END_TIME IS NULL");
sb.append(" AND EXISTS(SELECT 1");
sb.append(" FROM CCMS_FULL.CAMPAIGN_COMPLETE_CODE CCC");
sb.append(" WHERE CC.STATUS = CCC.COMPLETE_VALUE");
sb.append(" AND STATUS = 1");
sb.append(" AND IS_RECALL = 1");
sb.append(" AND COMPLETE_TYPE = 2");
sb.append(" AND COMPANY_SITE_ID = :companySiteId)");
sb.append(" AND CC.RECALL_TIME <= SYSDATE");
sb.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') >= SYSDATE");
sb.append(" AND CC.AGENT_ID = :agentId");
StringBuilder sb2 = new StringBuilder();
sb2.append("SELECT CC.CUSTOMER_ID AS customerId");
sb2.append(" FROM CCMS_FULL.CAMPAIGN_CUSTOMER CC");
sb2.append(" LEFT JOIN CCMS_FULL.RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID");
sb2.append(" LEFT JOIN ACD_FULL.AGENTS AG ON CC.AGENT_ID = AG.AGENT_ID AND CC.CAMPAIGN_ID = AG.CURRENT_CAMPAIGN_ID");
sb2.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
sb2.append(" AND CC.COMPANY_SITE_ID = :companySiteId");
sb2.append(" AND CC.IN_CAMPAIGN_STATUS = 1");
sb2.append(" AND CL.CUSTOMER_ID IS NULL");
sb2.append(" AND CL.END_TIME IS NULL");
sb2.append(" AND EXISTS(SELECT 1");
sb2.append(" FROM CCMS_FULL.CAMPAIGN_COMPLETE_CODE CCC");
sb2.append(" WHERE CC.STATUS = CCC.COMPLETE_VALUE");
sb2.append(" AND STATUS = 1");
sb2.append(" AND IS_RECALL = 1");
sb2.append(" AND COMPLETE_TYPE = 2");
sb2.append(" AND COMPANY_SITE_ID = :companySiteId)");
sb2.append(" AND CC.RECALL_TIME <= SYSDATE");
sb2.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') >= SYSDATE");
sb2.append(" AND (AG.CAMPAIGN_SYSTEM_STATUS IS NULL OR AG.CAMPAIGN_SYSTEM_STATUS <> 'AVAILABLE')");
StringBuilder sb3 = new StringBuilder();
sb3.append("SELECT CC.CUSTOMER_ID AS customerId");
sb3.append(" FROM CAMPAIGN_CUSTOMER CC");
sb3.append(" LEFT JOIN RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID");
sb3.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
sb3.append(" AND CC.COMPANY_SITE_ID = :companySiteId");
sb3.append(" AND CC.IN_CAMPAIGN_STATUS = 1");
sb3.append(" AND CL.CUSTOMER_ID IS NULL");
sb3.append(" AND CL.END_TIME IS NULL");
sb3.append(" AND EXISTS(SELECT 1");
sb3.append(" FROM CCMS_FULL.CAMPAIGN_COMPLETE_CODE CCC");
sb3.append(" WHERE CC.STATUS = CCC.COMPLETE_VALUE");
sb3.append(" AND STATUS = 1");
sb3.append(" AND IS_RECALL = 1");
sb3.append(" AND COMPLETE_TYPE = 2");
sb3.append(" AND COMPANY_SITE_ID = :companySiteId)");
sb3.append(" AND CC.RECALL_TIME + NUMTODSINTERVAL(:dungSai, 'MINUTE') <= SYSDATE");
StringBuilder sb4 = new StringBuilder();
sb4.append("SELECT CC.CUSTOMER_ID AS customerId ");
sb4.append(" FROM CAMPAIGN_CUSTOMER CC");
sb4.append(" INNER JOIN CUSTOMER C ON CC.CUSTOMER_ID = C.CUSTOMER_ID");
sb4.append(" LEFT JOIN RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID");
sb4.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
sb4.append(" AND CC.COMPANY_SITE_ID = :companySiteId");
sb4.append(" AND CC.IN_CAMPAIGN_STATUS = 1");
sb4.append(" AND CL.CUSTOMER_ID IS NULL");
sb4.append(" AND CL.END_TIME IS NULL");
sb4.append(" AND CC.STATUS = 0");
sb4.append(" AND C.STATUS = 1");
sb4.append(" AND C.CALL_ALLOWED = 1");
sb4.append(" AND C.IPCC_STATUS = 'active'");
StringBuilder sb5 = new StringBuilder();
sb5.append("SELECT CC.CUSTOMER_ID AS customerId");
sb5.append(" FROM CAMPAIGN_CUSTOMER CC");
sb5.append(" LEFT JOIN CCMS_FULL.RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID");
sb5.append(" WHERE CC.CAMPAIGN_ID = :campaignId");
sb5.append(" AND CC.COMPANY_SITE_ID = :companySiteId");
sb5.append(" AND CC.IN_CAMPAIGN_STATUS = 1");
sb5.append(" AND CL.CUSTOMER_ID IS NULL");
sb5.append(" AND CL.END_TIME IS NULL");
sb5.append(" AND EXISTS(SELECT 1");
sb5.append(" FROM CCMS_FULL.CAMPAIGN_COMPLETE_CODE CCC");
sb5.append(" WHERE CC.STATUS = CCC.COMPLETE_VALUE");
sb5.append(" AND STATUS = 1");
sb5.append(" AND IS_FINISH = 0");
sb5.append(" AND COMPLETE_TYPE = 1");
sb5.append(" AND COMPANY_SITE_ID = :companySiteId)");
sb5.append(" AND CC.RECALL_COUNT < C.MAX_RECALL");
sb5.append(" AND C.STATUS = 1");
sb5.append(" AND C.CALL_ALLOWED = 1");
sb5.append(" AND C.IPCC_STATUS = 'active'");
String getExecuteCus1Str = sb.toString();
String getExecuteCus2Str = sb2.toString();
String getExecuteCus3Str = sb3.toString();
String getExecuteCus4Str = sb4.toString();
String getExecuteCus5Str = sb5.toString();
List<CampaignCustomerDTO> lst1 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus1Str);
if (lst1.size() > 0) { if (lst1.size() > 0) {
lst = lst1; lst = lst1;
} else { } else {
// Khách hàng đến thời điểm hẹn gọi lại và không là khách hàng mà NSD dùng hẹn gọi lại nhưng TVV hẹn gọi lại không đăng nhập hoặc không thực hiện chiến dịch hiện tại // Khách hàng đến thời điểm hẹn gọi lại và không là khách hàng mà NSD dùng hẹn gọi lại nhưng TVV hẹn gọi lại không đăng nhập hoặc không thực hiện chiến dịch hiện tại
List<CampaignCustomerDTO> lst2 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus2Str); List<CampaignCustomerDTO> lst2 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer2"));
if (lst2.size() > 0) { if (lst2.size() > 0) {
lst = lst2; lst = lst2;
} else { } else {
// Khách hàng là khách hàng hẹn gọi lại nhưng thời gian hẹn gọi lại đã quá thời gian hẹn gọi lại + dung sai // Khách hàng là khách hàng hẹn gọi lại nhưng thời gian hẹn gọi lại đã quá thời gian hẹn gọi lại + dung sai
List<CampaignCustomerDTO> lst3 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus3Str); List<CampaignCustomerDTO> lst3 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer3"));
if (lst3.size() > 0) { if (lst3.size() > 0) {
lst = lst3; lst = lst3;
} else { } else {
// Khách hàng mới // Khách hàng mới
List<CampaignCustomerDTO> lst4 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus4Str); List<CampaignCustomerDTO> lst4 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer4"));
if (lst4.size() > 0) { if (lst4.size() > 0) {
lst = lst4; lst = lst4;
} else { } else {
// Khách hàng không liên lạc được nhưng chưa phải là cuộc gọi kết thúc và có số lần đã gọi < Số lần gọi tối đa được cấu hình và khoảng cách giữa 2 lần gọi < thời gian tương tác giữa 2 lần gọi được cấu hình // Khách hàng không liên lạc được nhưng chưa phải là cuộc gọi kết thúc và có số lần đã gọi < Số lần gọi tối đa được cấu hình và khoảng cách giữa 2 lần gọi < thời gian tương tác giữa 2 lần gọi được cấu hình
List<CampaignCustomerDTO> lst5 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus5Str); List<CampaignCustomerDTO> lst5 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer5"));
lst = lst5; lst = lst5;
} }
} }
......
...@@ -15,6 +15,7 @@ import com.viettel.campaign.utils.DataUtil; ...@@ -15,6 +15,7 @@ import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.WorkBookBuilder; import com.viettel.campaign.utils.WorkBookBuilder;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; 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.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
......
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.CCMSFullDatasourceConfig;
import com.viettel.campaign.config.DataSourceQualify; 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.ccms_full.Customer; import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.model.ccms_full.CustomerContact; import com.viettel.campaign.model.ccms_full.CustomerContact;
import com.viettel.campaign.model.ccms_full.CustomerList; import com.viettel.campaign.model.ccms_full.CustomerList;
import com.viettel.campaign.model.ccms_full.VSAUsers;
import com.viettel.campaign.repository.ccms_full.*; 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;
...@@ -15,11 +13,10 @@ import com.viettel.campaign.utils.DataUtil; ...@@ -15,11 +13,10 @@ import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil; import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CustomerDetailRequestDTO;
import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
...@@ -32,8 +29,6 @@ import org.hibernate.type.ShortType; ...@@ -32,8 +29,6 @@ import org.hibernate.type.ShortType;
import org.hibernate.type.StringType; import org.hibernate.type.StringType;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.data.domain.*; import org.springframework.data.domain.*;
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
...@@ -44,19 +39,15 @@ import org.springframework.util.ResourceUtils; ...@@ -44,19 +39,15 @@ import org.springframework.util.ResourceUtils;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import javax.sql.DataSource;
import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.*; import java.util.*;
@Service @Service
public class CustomerServiceImpl implements CustomerService { public class CustomerServiceImpl implements CustomerService {
@Autowired @Autowired
@PersistenceContext(unitName = DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL) @PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager; EntityManager entityManager;
@Autowired @Autowired
...@@ -100,40 +91,12 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -100,40 +91,12 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
// StringBuilder sb = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
StringBuilder sb = new StringBuilder(); sqlStrBuilder.append(" ORDER BY b.NAME ASC");
sb.append("select"); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
sb.append(" a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.CUSTOMER_LIST_ID customerListId,");
sb.append(" a.CUSTOMER_ID customerId,");
sb.append(" b.NAME name,");
sb.append(" b.DESCRIPTION description,");
sb.append(" b.COMPANY_NAME companyName,");
sb.append(" b.CUSTOMER_TYPE customerType,");
sb.append(" b.CURRENT_ADDRESS currentAddress,");
sb.append(" b.CALL_ALLOWED callAllowed,");
sb.append(" b.EMAIL_ALLOWED emailAllowed,");
sb.append(" b.SMS_ALLOWED smsAllowed,");
sb.append(" b.IPCC_STATUS ipccStatus,");
sb.append(" c.MOBILE mobileNumber,");
sb.append(" d.EMAIL email");
sb.append(" from CUSTOMER_LIST_MAPPING a");
sb.append(" join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID");
sb.append(" where 1 = 1");
sb.append(" and a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" and a.CUSTOMER_LIST_ID = :p_customer_list_id");
sb.append(" ORDER BY b.NAME ASC");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_list_id", customerListId); query.setParameter("p_customer_list_id", customerListId);
...@@ -217,49 +180,21 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -217,49 +180,21 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
// StringBuilder sb = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
StringBuilder sb = new StringBuilder();
sb.append(" select");
sb.append(" a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,");
sb.append(" a.COMPANY_SITE_ID companySiteId,");
sb.append(" a.CUSTOMER_LIST_ID customerListId,");
sb.append(" a.CUSTOMER_ID customerId,");
sb.append(" b.NAME name,");
sb.append(" b.DESCRIPTION description,");
sb.append(" b.COMPANY_NAME companyName,");
sb.append(" b.CUSTOMER_TYPE customerType,");
sb.append(" b.CURRENT_ADDRESS currentAddress,");
sb.append(" b.CALL_ALLOWED callAllowed,");
sb.append(" b.EMAIL_ALLOWED emailAllowed,");
sb.append(" b.SMS_ALLOWED smsAllowed,");
sb.append(" b.IPCC_STATUS ipccStatus,");
sb.append(" c.MOBILE mobileNumber,");
sb.append(" d.EMAIL email");
sb.append(" from CUSTOMER_LIST_MAPPING a");
sb.append(" join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID");
sb.append(" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL");
sb.append(" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID");
sb.append(" where 1 = 1");
sb.append(" and a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" and a.CUSTOMER_LIST_ID = :p_customer_list_id");
if (!DataUtil.isNullOrEmpty(name)) { if (!DataUtil.isNullOrEmpty(name)) {
sb.append(" AND b.NAME LIKE :p_name"); sqlStrBuilder.append(" AND UPPER(b.NAME) LIKE UPPER(:p_name)");
} }
if (!DataUtil.isNullOrEmpty(mobileNumber)) { if (!DataUtil.isNullOrEmpty(mobileNumber)) {
sb.append(" AND c.MOBILE LIKE :p_mobile_number"); sqlStrBuilder.append(" AND UPPER(c.MOBILE) LIKE UPPER(:p_mobile_number)");
} }
if (!DataUtil.isNullOrEmpty(email)) { if (!DataUtil.isNullOrEmpty(email)) {
sb.append(" AND d.EMAIL LIKE :p_email"); sqlStrBuilder.append(" AND UPPER(d.EMAIL) LIKE UPPER(:p_email)");
} }
sb.append(" ORDER BY name DESC"); sqlStrBuilder.append(" ORDER BY name DESC");
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_list_id", customerListId); query.setParameter("p_customer_list_id", customerListId);
...@@ -406,6 +341,59 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -406,6 +341,59 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO; return resultDTO;
} }
@Override
public ResultDTO getCustomerDetailById(Long companySiteId, Long customerListId, Long customerId) {
ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
if (DataUtil.isNullOrZero(companySiteId)) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customer-detail-by-id"));
sqlStrBuilder.append(" AND e.FUNCTION_CODE = 'CUSTOMER'");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_list_id", customerListId);
query.setParameter("p_customer_id", customerId);
query.addScalar("companySiteId", new LongType());
query.addScalar("customerListId", new LongType());
query.addScalar("customerId", new LongType());
query.addScalar("title", new StringType());
query.addScalar("type", new StringType());
query.addScalar("valueCombobox", new StringType());
query.addScalar("valueCheckbox", new ShortType());
query.addScalar("valueDate", new DateType());
query.addScalar("valueNumber", new LongType());
query.addScalar("valueText", new StringType());
query.setResultTransformer(Transformers.aliasToBean(CustomerDetailRequestDTO.class));
List<CustomerDetailRequestDTO> data = query.list();
resultDTO.setData(data);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally {
session.close();
}
return resultDTO;
}
public Date getSysdate() { public Date getSysdate() {
try { try {
Query query = entityManager.createNativeQuery("SELECT to_char(sysdate, 'dd/MM/YYYY hh24:mi:ss') FROM DUAL "); Query query = entityManager.createNativeQuery("SELECT to_char(sysdate, 'dd/MM/YYYY hh24:mi:ss') FROM DUAL ");
...@@ -438,31 +426,12 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -438,31 +426,12 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
// StringBuilder sb = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
StringBuilder sb = new StringBuilder(); sqlStrBuilder.append(" ORDER BY CREATE_AT DESC");
sb.append("SELECT"); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
sb.append(" CUSTOMER_LIST_ID customerListId,");
sb.append(" COMPANY_SITE_ID companySiteId,");
sb.append(" CUSTOMER_LIST_CODE customerListCode,");
sb.append(" CUSTOMER_LIST_NAME customerListName,");
sb.append(" STATUS status,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_AT createAt,");
sb.append(" UPDATE_BY updateBy,");
sb.append(" UPDATE_AT updateAt,");
sb.append(" SOURCE source,");
sb.append(" DEPT_CREATE deptCreate");
sb.append(" FROM CUSTOMER_LIST");
sb.append(" WHERE 1 = 1");
sb.append(" AND STATUS = 1");
sb.append(" AND COMPANY_SITE_ID = :p_company_site_id");
sb.append(" ORDER BY CREATE_AT DESC");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
...@@ -639,37 +608,19 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -639,37 +608,19 @@ public class CustomerServiceImpl implements CustomerService {
} }
try { try {
// StringBuilder sb = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(" AND CREATE_AT BETWEEN to_date(:p_date_from, 'YYYYMMDD') AND to_date(:p_date_to, 'YYYYMMDD')");
sb.append("SELECT");
sb.append(" CUSTOMER_LIST_ID customerListId,");
sb.append(" COMPANY_SITE_ID companySiteId,");
sb.append(" CUSTOMER_LIST_CODE customerListCode,");
sb.append(" CUSTOMER_LIST_NAME customerListName,");
sb.append(" STATUS status,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_AT createAt,");
sb.append(" UPDATE_BY updateBy,");
sb.append(" UPDATE_AT updateAt,");
sb.append(" SOURCE source,");
sb.append(" DEPT_CREATE deptCreate");
sb.append(" FROM CUSTOMER_LIST");
sb.append(" WHERE 1 = 1");
sb.append(" AND STATUS = 1");
sb.append(" AND COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND CREATE_AT BETWEEN to_date(:p_date_from, 'YYYYMMDD') AND to_date(:p_date_to, 'YYYYMMDD')");
if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListCode())) { if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListCode())) {
sb.append(" AND CUSTOMER_LIST_CODE LIKE :p_list_code"); sqlStrBuilder.append(" AND UPPER(CUSTOMER_LIST_CODE) LIKE UPPER(:p_list_code)");
} }
if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListName())) { if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListName())) {
sb.append(" AND CUSTOMER_LIST_NAME LIKE :p_list_name"); sqlStrBuilder.append(" AND UPPER(CUSTOMER_LIST_NAME) LIKE UPPER(:p_list_name)");
} }
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", searchCustomerRequestDTO.getCompanySiteId()); query.setParameter("p_company_site_id", searchCustomerRequestDTO.getCompanySiteId());
query.setParameter("p_date_from", searchCustomerRequestDTO.getConvertedDateFrom()); query.setParameter("p_date_from", searchCustomerRequestDTO.getConvertedDateFrom());
...@@ -723,8 +674,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -723,8 +674,7 @@ public class CustomerServiceImpl implements CustomerService {
resultDTO.setData(dataPage); resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch ( } catch (Exception e) {
Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally { } finally {
...@@ -791,37 +741,10 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -791,37 +741,10 @@ public class CustomerServiceImpl implements CustomerService {
public List<DynamicExcelHeaderDTO> getDynamicHeader(Long companySiteId) { public List<DynamicExcelHeaderDTO> getDynamicHeader(Long companySiteId) {
List<DynamicExcelHeaderDTO> headerList; List<DynamicExcelHeaderDTO> headerList;
try { try {
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_CUSTOMER_MNG, "get-dynamic-header"); String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_CUSTOMER_MNG, "get-dynamic-header");
StringBuilder sb = new StringBuilder();
sb.append(" select CUSTOMIZE_FIELD_ID customizeFieldId,");
sb.append(" SITE_ID companySiteId,");
sb.append(" FUNCTION_CODE functionCode,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_DATE createDate,");
sb.append(" UPDATE_BY updateBy,");
sb.append(" UPDATE_DATE updateDate,");
sb.append(" STATUS status,");
sb.append(" TYPE type,");
sb.append(" TITLE title,");
sb.append(" PLACEHOLDER placeholder,");
sb.append(" DESCRIPTION description,");
sb.append(" POSITION position,");
sb.append(" REQUIRED required,");
sb.append(" FIELD_OPTIONS_ID fieldOptionsId,");
sb.append(" REGEXP_FOR_VALIDATION regexpForValidation,");
sb.append(" MAX_LENGTH maxLength,");
sb.append(" MIN min,");
sb.append(" MAX max,");
sb.append(" MIN_LENGTH minLength,");
sb.append(" ACTIVE active");
sb.append(" from customize_fields");
sb.append(" where function_code = 'CUSTOMER'");
sb.append(" and site_id = :p_company_site_id");
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("p_company_site_id", companySiteId); param.put("p_company_site_id", companySiteId);
headerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(DynamicExcelHeaderDTO.class)); headerList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(DynamicExcelHeaderDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
...@@ -852,32 +775,10 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -852,32 +775,10 @@ public class CustomerServiceImpl implements CustomerService {
public List<CustomizeFieldDTO> getCustomizeField(Long customerId) { public List<CustomizeFieldDTO> getCustomizeField(Long customerId) {
List<CustomizeFieldDTO> customizeFieldDTOList; List<CustomizeFieldDTO> customizeFieldDTOList;
try { try {
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customize-field"); String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customize-field");
StringBuilder sb = new StringBuilder();
sb.append(" select CUSTOMIZE_FIELD_OBJECT_ID customizeFieldObjectId,");
sb.append(" OBJECT_ID objectId,");
sb.append(" CUSTOMIZE_FIELDS_ID customizeFieldId,");
sb.append(" VALUE_TEXT valueText,");
sb.append(" VALUE_NUMBER valueNumber,");
sb.append(" VALUE_DATE valueDate,");
sb.append(" VALUE_CHECKBOX valueCheckbox,");
sb.append(" CREATE_BY createBy,");
sb.append(" CREATE_DATE createDate,");
sb.append(" UPDATE_BY updateBy,");
sb.append(" UPDATE_DATE updateDate,");
sb.append(" STATUS status,");
sb.append(" FIELD_OPTION_VALUE_ID fieldOptionValueId,");
sb.append(" TITLE title,");
sb.append(" FUNCTION_CODE functionCode");
sb.append(" from customize_field_object");
sb.append(" where function_code = 'CUSTOMER' and object_id = :p_customer_id");
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("p_customer_id", customerId); param.put("p_customer_id", customerId);
customizeFieldDTOList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomizeFieldDTO.class)); customizeFieldDTOList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(CustomizeFieldDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
...@@ -889,63 +790,13 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -889,63 +790,13 @@ public class CustomerServiceImpl implements CustomerService {
public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) { public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) {
List<CustomerListDTO> customerList; List<CustomerListDTO> customerList;
try { try {
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-customer-list-info-from-customer-list"); String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-customer-list-info-from-customer-list");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder sb = new StringBuilder();
sb.append(" with totalCustomer as (");
sb.append(" select clm.customer_list_id,");
sb.append(" clm.company_site_id,");
sb.append(" count(clm.customer_id) total");
sb.append(" from customer_list_mapping clm");
sb.append(" inner join customer c on clm.customer_id = c.customer_id");
sb.append(" where c.status = 1");
sb.append(" group by clm.customer_list_id,clm.company_site_id");
sb.append(" ), customerInteractive as (");
sb.append(" select customer_list_id,");
sb.append(" company_site_id,");
sb.append(" count(customer_id) tt");
sb.append(" from campaign_customer where campaign_id = :p_campaign_id and status <> 0");
sb.append(" group by customer_list_id, company_site_id");
sb.append(" ), customerNotInteractive as (");
sb.append(" select customer_list_id,");
sb.append(" company_site_id,");
sb.append(" count(customer_id) ktt");
sb.append(" from campaign_customer where campaign_id = :p_campaign_id and status = 0");
sb.append(" and in_campaign_status = 1");
sb.append(" group by customer_list_id, company_site_id");
sb.append(" ), datas as (");
sb.append(" select customer_list_code customerListCode,");
sb.append(" customer_list_name customerListName,");
sb.append(" nvl(total, 0) totalCusInList,");
sb.append(" nvl(tt, 0) totalCusInteract,");
sb.append(" nvl(ktt, 0) totalCusNotInteract");
sb.append(" from customer_list cl");
sb.append(" left join totalCustomer tc on (cl.customer_list_id = tc.customer_list_id and cl.company_site_id = tc.company_site_id)");
sb.append(" left join customerInteractive ci on (cl.customer_list_id = ci.customer_list_id and cl.company_site_id = ci.company_site_id)");
sb.append(" left join customerNotInteractive cni on (cl.customer_list_id = cni.customer_list_id and cl.company_site_id = cni.company_site_id)");
sb.append(" where cl.company_site_id = :p_company_site_id");
sb.append(" )");
sb.append(" select * from");
sb.append(" (");
sb.append(" select a.*, rownum r__");
sb.append(" from");
sb.append(" (");
sb.append(" select * from datas");
sb.append(" order by customerListCode");
sb.append(" ) a");
sb.append(" where rownum < ((:p_page_number * :p_page_size) + 1 )");
sb.append(" )");
sb.append(" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)");
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("p_campaign_id", campaignCustomerDTO.getCampaignId()); param.put("p_campaign_id", campaignCustomerDTO.getCampaignId());
param.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId()); param.put("p_company_site_id", campaignCustomerDTO.getCompanySiteId());
param.put("p_page_number", campaignCustomerDTO.getPage()); param.put("p_page_number", campaignCustomerDTO.getPage());
param.put("p_page_size", campaignCustomerDTO.getPageSize()); param.put("p_page_size", campaignCustomerDTO.getPageSize());
customerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomerListDTO.class)); customerList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(CustomerListDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
...@@ -956,52 +807,11 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -956,52 +807,11 @@ public class CustomerServiceImpl implements CustomerService {
public List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO) { public List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO) {
List<CustomerDTO> customerList; List<CustomerDTO> customerList;
try { try {
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-individual-customer"); String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-individual-customer");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder sb = new StringBuilder();
sb.append("with cusPhone as (");
sb.append(" select customer_id cusId,");
sb.append(" contact phone");
sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 5");
sb.append(" and status = 1");
sb.append(" ), cusEmail as (");
sb.append(" select customer_id cusId,");
sb.append(" contact email");
sb.append(" from customer_contact cc");
sb.append(" where cc.contact_type = 2");
sb.append(" and status = 1");
sb.append(" ), datas as (");
sb.append(" select c.customer_id customerId,");
sb.append(" c.name,");
sb.append(" cP.phone,");
sb.append(" cE.email,");
sb.append(" c.customer_type cusType,");
sb.append(" c.company_name compName,");
sb.append(" c.current_address currentAddress,");
sb.append(" c.description");
sb.append(" from customer c");
sb.append(" left join cusPhone cP on c.customer_id = cP.cusId");
sb.append(" left join cusEmail cE on c.customer_id = cE.cusId");
sb.append(" )");
sb.append(" select * from");
sb.append(" (");
sb.append(" select a.*, rownum r__");
sb.append(" from");
sb.append(" (");
sb.append(" select * from datas");
sb.append(" order by datas.name");
sb.append(" ) a");
sb.append(" where rownum < ((:p_page_number * :p_page_size) + 1 )");
sb.append(" )");
sb.append(" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)");
Map<String, Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("p_page_number", campaignCustomerDTO.getPage()); param.put("p_page_number", campaignCustomerDTO.getPage());
param.put("p_page_size", campaignCustomerDTO.getPageSize()); param.put("p_page_size", campaignCustomerDTO.getPageSize());
customerList = namedParameterJdbcTemplate.query(sb.toString(), param, new BeanPropertyRowMapper<>(CustomerDTO.class)); customerList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(CustomerDTO.class));
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
......
package com.viettel.campaign.service.impl; 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.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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
*/ */
@Service @Service
@Transactional(rollbackFor = Exception.class)
public class ScenarioAnswerServiceImpl implements ScenarioAnswerService { 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.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.*; import com.viettel.campaign.model.ccms_full.CampaignLog;
import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.model.ccms_full.ScenarioQuestion;
import com.viettel.campaign.repository.ccms_full.CampaignLogRepository; 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.repository.ccms_full.ScenarioQuestionRepository; import com.viettel.campaign.repository.ccms_full.ScenarioQuestionRepository;
import com.viettel.campaign.service.ScenarioQuestionService; import com.viettel.campaign.service.ScenarioQuestionService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
import com.viettel.campaign.web.dto.ScenarioQuestionDTO; import com.viettel.campaign.web.dto.ScenarioQuestionDTO;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
...@@ -18,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -18,7 +17,6 @@ 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;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -37,12 +35,6 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -37,12 +35,6 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
@Autowired @Autowired
CampaignLogRepository campaignLogRepository; CampaignLogRepository campaignLogRepository;
@Autowired
ScenarioAnswerRepository scenarioAnswerRepository;
@Autowired
CampaignRepository campaignRepository;
@Autowired @Autowired
ModelMapper modelMapper; ModelMapper modelMapper;
...@@ -51,7 +43,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -51,7 +43,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
public ResultDTO findByScenarioIdAndCampaignIdAndCompanySiteId(Long scenarioId, Long campaignId, Long companySiteId) { public ResultDTO findByScenarioIdAndCampaignIdAndCompanySiteId(Long scenarioId, Long campaignId, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
List<ScenarioQuestion> lst = scenarioQuestionRepository.findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatusOrderByOrderIndex(scenarioId, campaignId, companySiteId, (short) 1); List<ScenarioQuestion> lst = scenarioQuestionRepository.findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatus(scenarioId, campaignId, companySiteId, (short)1);
resultDTO.setData(lst); resultDTO.setData(lst);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
...@@ -67,39 +59,12 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -67,39 +59,12 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO add(ScenarioQuestionDTO scenarioQuestionDTO) { public ResultDTO add(ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
List<ScenarioAnswerDTO> lstAnswers = new ArrayList<>();
List<ScenarioAnswer> lstAnswersToInsert = new ArrayList<>();
try { try {
ScenarioQuestion scenarioQuestion = modelMapper.map(scenarioQuestionDTO, ScenarioQuestion.class); ScenarioQuestion scenarioQuestion = modelMapper.map(scenarioQuestionDTO, ScenarioQuestion.class);
scenarioQuestion.setCreateTime(new Date()); scenarioQuestion.setCreateTime(new Date());
scenarioQuestion.setStatus((short) 1); scenarioQuestion.setStatus((short) 1);
scenarioQuestionRepository.save(scenarioQuestion); scenarioQuestionRepository.save(scenarioQuestion);
if (scenarioQuestionDTO.getLstAnswers().size() > 0) {
lstAnswers = scenarioQuestionDTO.getLstAnswers();
lstAnswers.forEach(item -> {
item.setCode(scenarioQuestion.getScenarioQuestionId() + "_" + item.getOrderIndex());
item.setScenarioQuestionId(scenarioQuestion.getScenarioQuestionId());
item.setCreateTime(new Date());
item.setStatus((short) 1);
ScenarioAnswer answer = modelMapper.map(item, ScenarioAnswer.class);
lstAnswersToInsert.add(answer);
});
scenarioAnswerRepository.saveAll(lstAnswersToInsert);
CampaignLog campaignLogAnswer = new CampaignLog();
campaignLogAnswer.setCompanySiteId(scenarioQuestion.getCompanySiteId());
campaignLogAnswer.setCreateTime(new Date());
campaignLogAnswer.setAgentId(null);
campaignLogAnswer.setTableName("SCENARIO_ANSWER");
campaignLogAnswer.setColumnName(null);
campaignLogAnswer.setPreValue(null);
campaignLogAnswer.setPostValue(null);
campaignLogAnswer.setDescription("Them moi cau tra loi rieng le");
campaignLogAnswer.setCampaignId(scenarioQuestion.getCampaignId());
campaignLogAnswer.setCustomerId(scenarioQuestion.getScenarioQuestionId());
campaignLogRepository.save(campaignLogAnswer);
}
CampaignLog campaignLog = new CampaignLog(); CampaignLog campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(scenarioQuestion.getCompanySiteId()); campaignLog.setCompanySiteId(scenarioQuestion.getCompanySiteId());
campaignLog.setCreateTime(new Date()); campaignLog.setCreateTime(new Date());
...@@ -128,7 +93,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -128,7 +93,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
public Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId) { public Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId) {
try { try {
return scenarioQuestionRepository.getMaxOrderId(scenarioId, campaignId, companySiteId); return scenarioQuestionRepository.getMaxOrderId(scenarioId, campaignId, companySiteId);
} catch (Exception ex) { }catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
} }
return null; return null;
...@@ -139,86 +104,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -139,86 +104,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
public Integer countDuplicateQuestionCode(String code, Long scenarioId, Long campaignId, Long companySiteId) { public Integer countDuplicateQuestionCode(String code, Long scenarioId, Long campaignId, Long companySiteId) {
try { try {
return scenarioQuestionRepository.countDuplicateQuestionCode(code, scenarioId, campaignId, companySiteId); return scenarioQuestionRepository.countDuplicateQuestionCode(code, scenarioId, campaignId, companySiteId);
} catch (Exception ex) { }catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
} }
return null; return null;
} }
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO delete(ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = new ResultDTO();
CampaignLog campaignLog;
try {
//find campaign
Campaign campaign = campaignRepository.findByCampaignId(scenarioQuestionDTO.getCampaignId());
if (campaign != null) {
if (campaign.getStatus() == 0L || campaign.getStatus() == 1L) {
//delete question by questionId
scenarioQuestionRepository.deleteById(scenarioQuestionDTO.getScenarioQuestionId());
campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(scenarioQuestionDTO.getCompanySiteId());
campaignLog.setCreateTime(new Date());
campaignLog.setTableName("SCENARIO_QUESTION");
campaignLog.setDescription("Xoa cau hoi");
campaignLog.setCampaignId(scenarioQuestionDTO.getCampaignId());
campaignLog.setCustomerId(scenarioQuestionDTO.getScenarioQuestionId());
campaignLogRepository.save(campaignLog);
//delete answer by questionId
scenarioAnswerRepository.deleteScenarioAnswersByScenarioQuestionId(scenarioQuestionDTO.getScenarioQuestionId());
campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(scenarioQuestionDTO.getCompanySiteId());
campaignLog.setCreateTime(new Date());
campaignLog.setTableName("SCENARIO_ANSWER");
campaignLog.setDescription("Xoa cau tra loi");
campaignLog.setCampaignId(scenarioQuestionDTO.getCampaignId());
campaignLog.setCustomerId(scenarioQuestionDTO.getScenarioQuestionId());
campaignLogRepository.save(campaignLog);
} else {
//get and update status question
ScenarioQuestion scenarioQuestion = scenarioQuestionRepository.findScenarioQuestionByScenarioQuestionId(scenarioQuestionDTO.getScenarioQuestionId());
scenarioQuestion.setStatus((short) 0);
scenarioQuestion.setDeleteTime(new Date());
scenarioQuestionRepository.save(scenarioQuestion);
campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(scenarioQuestionDTO.getCompanySiteId());
campaignLog.setCreateTime(new Date());
campaignLog.setTableName("SCENARIO_QUESTION");
campaignLog.setDescription("Chinh sua cau hoi");
campaignLog.setCampaignId(scenarioQuestionDTO.getCampaignId());
campaignLog.setCustomerId(scenarioQuestionDTO.getScenarioQuestionId());
campaignLogRepository.save(campaignLog);
List<ScenarioAnswer> lstAnswer = scenarioAnswerRepository.findByScenarioQuestionIdAndCompanySiteIdAndStatus(scenarioQuestion.getScenarioQuestionId(),
scenarioQuestion.getCompanySiteId(), (short) 1);
if(lstAnswer.size() > 0) {
lstAnswer.forEach(answer -> {
answer.setStatus((short) 0);
answer.setDeleteTime(new Date());
CampaignLog log = new CampaignLog();
log.setCompanySiteId(scenarioQuestionDTO.getCompanySiteId());
log.setCreateTime(new Date());
log.setTableName("SCENARIO_ANSWER");
log.setDescription("Chinh sua cau tra loi");
log.setCampaignId(scenarioQuestionDTO.getCampaignId());
log.setCustomerId(answer.getScenarioAnswerId());
campaignLogRepository.save(log);
});
}
}
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;
}
} }
...@@ -18,23 +18,23 @@ public class SQLBuilder { ...@@ -18,23 +18,23 @@ public class SQLBuilder {
public static final String SQL_MODULE_CAMPAIGN_STATUS_MNG = "campaign-status-mng"; public static final String SQL_MODULE_CAMPAIGN_STATUS_MNG = "campaign-status-mng";
public static final String SQL_MODULE_CAMPAIGN_CUSTOMER_MNG = "campaign-customer-mng"; public static final String SQL_MODULE_CAMPAIGN_CUSTOMER_MNG = "campaign-customer-mng";
// public static String getSqlQueryById(String module, public static String getSqlQueryById(String module,
// String queryId) { String queryId) {
// File folder = null; File folder = null;
// try { try {
// folder = new ClassPathResource( folder = new ClassPathResource(
// "sql" + File.separator + module + File.separator + queryId + ".sql").getFile(); "sql" + File.separator + module + File.separator + queryId + ".sql").getFile();
//
// // Read file // Read file
// if (folder.isFile()) { if (folder.isFile()) {
// String sql = new String(Files.readAllBytes(Paths.get(folder.getAbsolutePath()))); String sql = new String(Files.readAllBytes(Paths.get(folder.getAbsolutePath())));
// return sql; return sql;
// } }
// } catch (IOException e) { } catch (IOException e) {
// return null; return null;
// } }
// return null; return null;
// } }
public static Pageable buildPageable(BaseDTO obj) { public static Pageable buildPageable(BaseDTO obj) {
Pageable pageable = null; Pageable pageable = null;
......
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CampaignAgentDTO extends BaseDTO {
Long campaignAgentId;
Long campaignId;
Long agentId;
Short filterType;
Integer status;
Long companySiteId;
Long reSchedule;
}
...@@ -3,8 +3,6 @@ package com.viettel.campaign.web.dto; ...@@ -3,8 +3,6 @@ package com.viettel.campaign.web.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date;
@Getter @Getter
@Setter @Setter
public class CustomerCustomDTO { public class CustomerCustomDTO {
......
...@@ -3,7 +3,6 @@ package com.viettel.campaign.web.dto; ...@@ -3,7 +3,6 @@ package com.viettel.campaign.web.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
...@@ -12,7 +11,7 @@ import java.util.Date; ...@@ -12,7 +11,7 @@ import java.util.Date;
@Getter @Getter
@Setter @Setter
public class ScenarioAnswerDTO implements Serializable { public class ScenarioAnswerDTO {
public Long scenarioAnswerId; public Long scenarioAnswerId;
public Long companySiteId; public Long companySiteId;
public Long scenarioQuestionId; public Long scenarioQuestionId;
...@@ -24,5 +23,4 @@ public class ScenarioAnswerDTO implements Serializable { ...@@ -24,5 +23,4 @@ public class ScenarioAnswerDTO implements Serializable {
public Date createTime; public Date createTime;
public Date deleteTime; public Date deleteTime;
public Long mappingQuestionId; public Long mappingQuestionId;
public Long campaignId;
} }
...@@ -3,9 +3,7 @@ package com.viettel.campaign.web.dto; ...@@ -3,9 +3,7 @@ package com.viettel.campaign.web.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
...@@ -13,7 +11,7 @@ import java.util.List; ...@@ -13,7 +11,7 @@ import java.util.List;
@Getter @Getter
@Setter @Setter
public class ScenarioQuestionDTO implements Serializable { public class ScenarioQuestionDTO {
private Long scenarioQuestionId; private Long scenarioQuestionId;
private Long companySiteId; private Long companySiteId;
private Long campaignId; private Long campaignId;
...@@ -28,5 +26,4 @@ public class ScenarioQuestionDTO implements Serializable { ...@@ -28,5 +26,4 @@ public class ScenarioQuestionDTO implements Serializable {
private Short isRequire; private Short isRequire;
private Short isDefault; private Short isDefault;
private Short answerIndex; private Short answerIndex;
private List<ScenarioAnswerDTO> lstAnswers;
} }
...@@ -12,26 +12,27 @@ public class VSAUsersDTO { ...@@ -12,26 +12,27 @@ public class VSAUsersDTO {
String userName; String userName;
Short status; Short status;
String fullName; String fullName;
Long userTypeId; // Long userTypeId;
Date createDate; // Date createDate;
String description; // String description;
String staffCode; // String staffCode;
Long managerId; // Long managerId;
Long locationId; // Long locationId;
Long deptId; // Long deptId;
String deptLevel; // String deptLevel;
Long posId; // Long posId;
String deptName; // String deptName;
Long groupId; // Long groupId;
Long siteId; // Long siteId;
Long companySiteId; Long companySiteId;
Short agentType; // Short agentType;
String mobileNumber; // String mobileNumber;
String facebookId; // String facebookId;
Short loginType; // Short loginType;
String googleId; // String googleId;
String email; // String email;
Long availableTicket; // Long availableTicket;
String userKazooId; // String userKazooId;
Short filterType; 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;
}
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; package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.AgentsService; 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.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignAgentRequestDTO;
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;
...@@ -11,10 +12,11 @@ import org.springframework.http.ResponseEntity; ...@@ -11,10 +12,11 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List;
@RestController @RestController
@RequestMapping("/ipcc/agents") @RequestMapping("/ipcc/agents")
@CrossOrigin @CrossOrigin(origins = "*")
public class AgentsController { public class AgentsController {
private static final Logger logger = LoggerFactory.getLogger(CampaignController.class); private static final Logger logger = LoggerFactory.getLogger(CampaignController.class);
...@@ -31,23 +33,46 @@ public class AgentsController { ...@@ -31,23 +33,46 @@ public class AgentsController {
@GetMapping("/findAll") @GetMapping("/findAll")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> listAgentsByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId) { public ResponseEntity<ResultDTO> listAgentByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId) {
ResultDTO result = agentsService.getAllAgentsByCompanySiteId(page, pageSize, companySiteId); ResultDTO result = agentsService.getAllAgentByCompanySiteId(page, pageSize, companySiteId);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@GetMapping("/findAllSelected") @GetMapping("/findAllSelected")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> listAgentsSelectedByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) { public ResponseEntity<ResultDTO> listAgentSelectedByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = agentsService.getAllAgentsSelectedByCompanySiteId(page, pageSize, companySiteId, campaignId); ResultDTO result = agentsService.getAllAgentSelectedByCompanySiteId(page, pageSize, companySiteId, campaignId);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@PostMapping("/createCampaignAgents") @PostMapping("/createCampaignAgent")
@ResponseBody @ResponseBody
public ResultDTO createCustomerList(@RequestBody @Valid CampaignAgentsDTO campaignAgentsDTO) { public ResultDTO createCampaignAgent(@RequestBody @Valid CampaignAgentDTO campaignAgentDTO) {
ResultDTO result = new ResultDTO(); 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; return result;
} }
} }
...@@ -30,7 +30,7 @@ import java.util.Map; ...@@ -30,7 +30,7 @@ import java.util.Map;
@RestController @RestController
@RequestMapping("/ipcc/campaign") @RequestMapping("/ipcc/campaign")
@CrossOrigin("*") @CrossOrigin
public class CampaignController { public class CampaignController {
private static final Logger logger = LoggerFactory.getLogger(CampaignController.class); private static final Logger logger = LoggerFactory.getLogger(CampaignController.class);
...@@ -166,7 +166,7 @@ public class CampaignController { ...@@ -166,7 +166,7 @@ public class CampaignController {
return new ResponseEntity<byte[]>(contentReturn, headers, HttpStatus.OK); 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) { public ResultDTO changeCampaignStatus(@RequestBody CampaignDTO dto, HttpServletRequest request) {
dto.setSessionId(request.getSession().getId()); dto.setSessionId(request.getSession().getId());
return campaignService.changeCampaignStatus(dto); return campaignService.changeCampaignStatus(dto);
......
...@@ -90,6 +90,13 @@ public class CustomerController { ...@@ -90,6 +90,13 @@ public class CustomerController {
return result; 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 ----------------- // // --------------- customer list table ----------------- //
...@@ -120,7 +127,7 @@ public class CustomerController { ...@@ -120,7 +127,7 @@ public class CustomerController {
// return new ResponseEntity<>("", HttpStatus.OK); // return new ResponseEntity<>("", HttpStatus.OK);
} }
@PutMapping("/updateCustomerList") @PostMapping("/updateCustomerList")
@ResponseBody @ResponseBody
public ResultDTO updateCustomerList(@RequestBody @Valid CustomerListDTO customerListDTO) { public ResultDTO updateCustomerList(@RequestBody @Valid CustomerListDTO customerListDTO) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
......
package com.viettel.campaign.web.rest; package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.ScenarioAnswerService; import org.springframework.web.bind.annotation.CrossOrigin;
import com.viettel.campaign.web.dto.ResultDTO; import org.springframework.web.bind.annotation.RequestMapping;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO; import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
...@@ -16,25 +12,4 @@ import org.springframework.web.bind.annotation.*; ...@@ -16,25 +12,4 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping("/ipcc/campaign/scenario-answer") @RequestMapping("/ipcc/campaign/scenario-answer")
@CrossOrigin @CrossOrigin
public class ScenarioAnswerController { 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 { ...@@ -43,10 +43,4 @@ public class ScenarioQuestionController {
public Integer countDuplicateQuestionCode(@RequestParam String code, @RequestParam Long scenarioId, @RequestParam Long campaignId, @RequestParam Long companySiteId) { public Integer countDuplicateQuestionCode(@RequestParam String code, @RequestParam Long scenarioId, @RequestParam Long campaignId, @RequestParam Long companySiteId) {
return scenarioQuestionService.countDuplicateQuestionCode(code, scenarioId, campaignId, 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);
}
} }
server: server:
port: 1111 port: 9999
spring: spring:
application: application:
name: campaign name: campaign
datasource:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@10.60.157.135:1521:vt
username: CCMS_FULL
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
...@@ -22,22 +34,3 @@ spring: ...@@ -22,22 +34,3 @@ spring:
# bootstrap-servers: 192.168.1.201:9092 # bootstrap-servers: 192.168.1.201:9092
# key-serializer: org.apache.kafka.common.serialization.StringSerializer # key-serializer: org.apache.kafka.common.serialization.StringSerializer
# value-serializer: org.apache.kafka.common.serialization.StringSerializer # value-serializer: org.apache.kafka.common.serialization.StringSerializer
datasource-property:
ccms-full:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@10.60.157.135:1521:vt
username: CCMS_FULL
password: CCMS_FULL#123
max_pool_size: 32
acd-full:
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
SELECT CC.CUSTOMER_ID AS customerId SELECT CC.CUSTOMER_ID AS customerId
FROM CAMPAIGN_CUSTOMER CC FROM CAMPAIGN_CUSTOMER CC
LEFT JOIN CCMS_FULL.RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID LEFT JOIN CCMS_FULL.RECEIVE_CUST_LOG CL ON CC.CUSTOMER_ID = CL.CUSTOMER_ID
WHERE CC.CAMPAIGN_ID = :campaignId WHERE CC.CAMPAIGN_ID = :campaignId
AND CC.COMPANY_SITE_ID = :companySiteId AND CC.COMPANY_SITE_ID = :companySiteId
AND CC.IN_CAMPAIGN_STATUS = 1 AND CC.IN_CAMPAIGN_STATUS = 1
AND CL.CUSTOMER_ID IS NULL AND CL.CUSTOMER_ID IS NULL
......
...@@ -3,28 +3,29 @@ SELECT ...@@ -3,28 +3,29 @@ SELECT
a.USER_NAME userName, a.USER_NAME userName,
a.STATUS status, a.STATUS status,
a.FULL_NAME fullName, a.FULL_NAME fullName,
a.USER_TYPE_ID userTypeId, -- a.USER_TYPE_ID userTypeId,
a.CREATE_DATE createDate, -- a.CREATE_DATE createDate,
a.DESCRIPTION description, -- a.DESCRIPTION description,
a.STAFF_CODE staffCode, -- a.STAFF_CODE staffCode,
a.MANAGER_ID managerId, -- a.MANAGER_ID managerId,
a.LOCATION_ID locationId, -- a.LOCATION_ID locationId,
a.DEPT_ID deptId, -- a.DEPT_ID deptId,
a.DEPT_LEVEL deptLevel, -- a.DEPT_LEVEL deptLevel,
a.POS_ID posId, -- a.POS_ID posId,
a.DEPT_NAME deptName, -- a.DEPT_NAME deptName,
a.GROUP_ID groupId, -- a.GROUP_ID groupId,
a.SITE_ID siteId, -- a.SITE_ID siteId,
a.COMPANY_SITE_ID companySiteId, a.COMPANY_SITE_ID companySiteId,
a.AGENT_TYPE agentType, -- a.AGENT_TYPE agentType,
a.MOBILE_NUMBER mobileNumber, -- a.MOBILE_NUMBER mobileNumber,
a.FACEBOOK_ID facebookId, -- a.FACEBOOK_ID facebookId,
a.LOGIN_TYPE loginType, -- a.LOGIN_TYPE loginType,
a.GOOGLE_ID googleId, -- a.GOOGLE_ID googleId,
a.EMAIL email, -- a.EMAIL email,
a.AVAILABLE_TICKET availableTicket, -- a.AVAILABLE_TICKET availableTicket,
a.USER_KAZOO_ID userKazooId, -- a.USER_KAZOO_ID userKazooId,
b.FILTER_TYPE filterType b.FILTER_TYPE filterType,
b.CAMPAIGN_AGENT_ID campaignAgentId
FROM VSA_USERS a FROM VSA_USERS a
-- LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID -- LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID
-- WHERE 1 = 1 -- WHERE 1 = 1
......
...@@ -23,43 +23,3 @@ from CUSTOMER_LIST_MAPPING a ...@@ -23,43 +23,3 @@ from CUSTOMER_LIST_MAPPING a
where 1 = 1 where 1 = 1
and a.COMPANY_SITE_ID = :p_company_site_id and a.COMPANY_SITE_ID = :p_company_site_id
and a.CUSTOMER_LIST_ID = :p_customer_list_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
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