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

commit

parent d56c857c
package com.viettel.campaign;
import com.viettel.campaign.config.DataSourceProperties;
import com.viettel.campaign.utils.Config;
import com.viettel.campaign.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication(scanBasePackages={"com.viettel.campaign"})
@ComponentScan({"com.viettel"})
public class ServiceCampaignApplication {
@Autowired
DataSourceProperties dataSourceProperties;
public static void main(String[] args) {
SpringApplication.run(ServiceCampaignApplication.class, args);
......
......@@ -2,7 +2,6 @@ package com.viettel.campaign.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.*;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
......@@ -12,7 +11,6 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.sql.DataSource;
import java.util.HashMap;
......@@ -31,30 +29,15 @@ public class ACDFullDatasourceConfig {
@Autowired
private Environment env;
@Value("${datasource-property.acd-full.driver-class-name}")
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")
@Bean("datasource2.datasource")
public DataSource dataSource(){
OracleDataSource r = new OracleDataSource();
r.setDriverClassName(driverClassName);
r.setDriverClassName(env.getProperty("spring.datasource2.driver-class-name"));
r.setPoolName("app.datasource2");
r.setJdbcUrl(url);
r.setMaximumPoolSize(maxPoolSize);
r.setPassword(password);
r.setUsername(username);
r.setJdbcUrl(env.getProperty("spring.datasource2.url"));
r.setMaximumPoolSize(env.getProperty("spring.datasource2.max_pool_size", Integer.class));
r.setPassword(env.getProperty("spring.datasource2.password"));
r.setUsername(env.getProperty("spring.datasource2.username"));
return r;
}
......@@ -86,8 +69,8 @@ public class ACDFullDatasourceConfig {
}
@Bean(name = DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_ACD_FULL)
@DependsOn("datasource.datasource2")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource.datasource2") DataSource abcDataSource) {
@DependsOn("datasource2.datasource")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource2.datasource") DataSource abcDataSource) {
return new NamedParameterJdbcTemplate(abcDataSource);
}
}
......
......@@ -2,7 +2,6 @@ package com.viettel.campaign.config;
import org.springframework.beans.factory.annotation.Autowired;
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.Configuration;
import org.springframework.context.annotation.DependsOn;
......@@ -33,30 +32,15 @@ public class CCMSFullDatasourceConfig {
@Autowired
private Environment env;
@Value("${datasource-property.ccms-full.driver-class-name}")
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")
@Bean("datasource1.datasource")
public DataSource dataSource(){
OracleDataSource r = new OracleDataSource();
r.setDriverClassName(driverClassName);
r.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
r.setPoolName("app.datasource1");
r.setJdbcUrl(url);
r.setMaximumPoolSize(maxPoolSize);
r.setPassword(password);
r.setUsername(username);
r.setJdbcUrl(env.getProperty("spring.datasource.url"));
r.setMaximumPoolSize(env.getProperty("spring.datasource.max_pool_size", Integer.class));
r.setPassword(env.getProperty("spring.datasource.password"));
r.setUsername(env.getProperty("spring.datasource.username"));
return r;
}
......@@ -88,8 +72,8 @@ public class CCMSFullDatasourceConfig {
}
@Bean(name = DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL)
@DependsOn("datasource.datasource1")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource.datasource1") DataSource abcDataSource) {
@DependsOn("datasource1.datasource")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("datasource1.datasource") DataSource 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 {
HttpServletRequest request = (HttpServletRequest) req;
chain.doFilter(req, resp);
// if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
// chain.doFilter(req, resp);
// return;
// }
// if ("/".equals(request.getRequestURI())) {
// chain.doFilter(req, resp);
// return;
// }
// String xAuthToken = request.getHeader("X-Auth-Token");
// if (xAuthToken == null || "".equals(xAuthToken)) {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null.");
// return;
// }
// Object obj = RedisUtil.getInstance().get(xAuthToken);
// if (obj instanceof UserSession) {
// chain.doFilter(req, resp);
// } else {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
// }
// chain.doFilter(req, resp);
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
chain.doFilter(req, resp);
return;
}
if ("/".equals(request.getRequestURI())) {
chain.doFilter(req, resp);
return;
}
String xAuthToken = request.getHeader("X-Auth-Token");
if (xAuthToken == null || "".equals(xAuthToken)) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null.");
return;
}
Object obj = RedisUtil.getInstance().get(xAuthToken);
if (obj instanceof UserSession) {
chain.doFilter(req, resp);
} else {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
}
}
@Override
......
package com.viettel.campaign.mapper;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.web.dto.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;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository
@Transactional(DataSourceQualify.CCMS_FULL)
public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Long> {
......@@ -19,4 +21,8 @@ public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Lo
@Modifying
@Query("UPDATE CampaignAgent SET status = :status WHERE agentId = :agentId AND campaignId = :campaignId")
void updateCampaignAgentSetStatus(@Param("agentId") Long agentId, @Param("campaignId") Long campaignId, @Param("status") Integer status);
@Modifying
@Query("delete from CampaignAgent c where c.campaignAgentId in (:p_campaign_agent_id)")
int deleteCampaignAgent(@Param("p_campaign_agent_id") List<Long> campaignAgentId);
}
......@@ -2,12 +2,8 @@ package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.ScenarioAnswer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author anhvd_itsol
*/
......@@ -15,13 +11,4 @@ import java.util.List;
@Repository
public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer, Long> {
List<ScenarioAnswer> findByScenarioQuestionIdAndCompanySiteIdAndStatus(Long scenarioQuestionId, Long companySiteId, Short status);
@Query(value="SELECT MAX(orderIndex) FROM ScenarioAnswer WHERE scenarioQuestionId = :scenarioQuestionId AND companySiteId = :companySiteId AND status = 1")
Long getMaxAnswerOrderId(@Param("scenarioQuestionId") Long scenarioQuestionId, @Param("companySiteId") Long companySiteId);
Integer deleteScenarioAnswersByScenarioQuestionId(Long scenarioQuestionId);
ScenarioAnswer findScenarioAnswerByScenarioAnswerId(Long scenarioAnswerId);
}
......@@ -14,13 +14,11 @@ import java.util.List;
@Repository
public interface ScenarioQuestionRepository extends JpaRepository<ScenarioQuestion, Long> {
List<ScenarioQuestion> findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatusOrderByOrderIndex(Long scenarioId, Long campaignId, Long companySiteId, Short status);
List<ScenarioQuestion> findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatus(Long scenarioId, Long campaignId, Long companySiteId, Short status);
@Query(value="SELECT MAX(orderIndex) FROM ScenarioQuestion WHERE scenarioId = :scenarioId AND campaignId = :campaignId AND companySiteId = :companySiteId AND status = 1")
Long getMaxOrderId(@Param("scenarioId") Long scenarioId, @Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
@Query(value = "SELECT COUNT(1) FROM ScenarioQuestion WHERE code = :code AND scenarioId = :scenarioId AND campaignId = :campaignId AND companySiteId = :companySiteId AND status = 1")
Integer countDuplicateQuestionCode(@Param("code") String code, @Param("scenarioId") Long scenarioId, @Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
ScenarioQuestion findScenarioQuestionByScenarioQuestionId(Long scenarioQuestionId);
}
......@@ -32,30 +32,9 @@ public class UserActionLogRepositoryImpl implements UserActionLogRepositoryCusto
Session session = sessionFactory.openSession();
session.beginTransaction();
try{
// StringBuilder sqlStr = new StringBuilder();
// sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "insert-to-user-action-log"));
StringBuilder sb = new StringBuilder();
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());
StringBuilder sqlStr = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "insert-to-user-action-log"));
SQLQuery query = session.createSQLQuery(sqlStr.toString());
query.setParameter("par_agentId", userActionLogDTO.getAgentId() == null ? "" : userActionLogDTO.getAgentId());
query.setParameter("par_companySiteId", userActionLogDTO.getCompanySiteId());
query.setParameter("par_sessionId", userActionLogDTO.getSessionId());
......
package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.CampaignAgentDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignAgentRequestDTO;
import java.util.List;
public interface AgentsService {
ResultDTO getAgentsByAgentId(String agentId);
ResultDTO getAllAgentsByCompanySiteId(int page, int pageSize, Long companySiteId);
ResultDTO getAllAgentByCompanySiteId(int page, int pageSize, Long companySiteId);
ResultDTO getAllAgentSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId);
ResultDTO createCampaignAgent(CampaignAgentDTO campaignAgentDTO);
ResultDTO deleteCampaignAgentById(List<Long> campaignAgentId);
ResultDTO getAllAgentsSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId);
ResultDTO searchCampaignAgentByName(int page, int pageSize, Long companySiteId, String userName, String fullName);
ResultDTO createCampaignAgents(CampaignAgentsDTO campaignAgentsDTO);
ResultDTO createMultipleCampaignAgent(CampaignAgentRequestDTO campaignAgentRequestDTO);
}
......@@ -26,6 +26,8 @@ public interface CustomerService {
ResultDTO deleteIds(CustomerRequestDTO customerRequestDTO);
ResultDTO getCustomerDetailById(Long companySiteId, Long customerListId, Long customerId);
// ------------ customer list ------------ //
ResultDTO getAllCustomerList(int page, int pageSize, String sort, Long companySiteId);
......
package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
/**
* @author anhvd_itsol
*/
public interface ScenarioAnswerService {
ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId);
Long getMaxAnswerOrderId(Long scenarioQuestionId, Long companySiteId);
ResultDTO delete(ScenarioAnswerDTO scenarioAnswerDTO);
}
......@@ -15,6 +15,4 @@ public interface ScenarioQuestionService {
Long getMaxOrderId(Long scenarioId, Long campaignId, Long companySiteId);
Integer countDuplicateQuestionCode(String code, Long scenarioId, Long campaignId, Long companySiteId);
ResultDTO delete(ScenarioQuestionDTO scenarioQuestionDTO);
}
......@@ -54,36 +54,10 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
}
try {
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "findAll-CampaignCompleteCode"));
StringBuilder sb = new StringBuilder();
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());
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "findAll-CampaignCompleteCode"));
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
......@@ -284,11 +258,8 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
}
try {
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "get-max-value-completevalue"));
StringBuilder sqlStrBuilder = new StringBuilder();
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");
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "get-max-value-completevalue"));
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_site_id", completeCodeDTO.getCompanySiteId());
......@@ -370,31 +341,10 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
}
try {
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG,"findCampaignCodeById"));
StringBuilder sb = new StringBuilder();
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());
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG,"findCampaignCodeById"));
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_campaignComleteCode",campaignCompleteCodeId);
......
......@@ -286,136 +286,27 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId()));
List<CampaignCustomerDTO> lst = new ArrayList<>();
// Khách hàng đến thời điểm hẹn gọi lại và là khách hàng mà chính NSD hẹn gọi lại
StringBuilder sb = new StringBuilder();
sb.append("SELECT CC.CUSTOMER_ID AS customerId");
sb.append(" 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);
List<CampaignCustomerDTO> lst1 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer1"));
if (lst1.size() > 0) {
lst = lst1;
} else {
// Khách hàng đến thời điểm hẹn gọi lại và không là khách hàng mà NSD dùng hẹn gọi lại nhưng TVV hẹn gọi lại không đăng nhập hoặc không thực hiện chiến dịch hiện tại
List<CampaignCustomerDTO> lst2 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus2Str);
List<CampaignCustomerDTO> lst2 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer2"));
if (lst2.size() > 0) {
lst = lst2;
} else {
// Khách hàng là khách hàng hẹn gọi lại nhưng thời gian hẹn gọi lại đã quá thời gian hẹn gọi lại + dung sai
List<CampaignCustomerDTO> lst3 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus3Str);
List<CampaignCustomerDTO> lst3 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer3"));
if (lst3.size() > 0) {
lst = lst3;
} else {
// 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) {
lst = lst4;
} else {
// Khách hàng không liên lạc được nhưng chưa phải là cuộc gọi kết thúc và có số lần đã gọi < Số lần gọi tối đa được cấu hình và khoảng cách giữa 2 lần gọi < thời gian tương tác giữa 2 lần gọi được cấu hình
List<CampaignCustomerDTO> lst5 = campaignCustomerRepository.getDataCampaignCustomer(dto, getExecuteCus5Str);
List<CampaignCustomerDTO> lst5 = campaignCustomerRepository.getDataCampaignCustomer(dto, SQLBuilder.getSqlQueryById("campaign-execute", "get-execute-customer5"));
lst = lst5;
}
}
......
......@@ -15,6 +15,7 @@ import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.WorkBookBuilder;
import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import oracle.jdbc.driver.Const;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.*;
......
package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.Campaign;
import com.viettel.campaign.model.ccms_full.CampaignLog;
import com.viettel.campaign.model.ccms_full.ScenarioAnswer;
import com.viettel.campaign.repository.ccms_full.CampaignLogRepository;
import com.viettel.campaign.repository.ccms_full.CampaignRepository;
import com.viettel.campaign.repository.ccms_full.ScenarioAnswerRepository;
import com.viettel.campaign.service.ScenarioAnswerService;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* @author anhvd_itsol
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ScenarioAnswerServiceImpl implements ScenarioAnswerService {
private static final Logger logger = LogManager.getLogger(ScenarioQuestionServiceImpl.class);
@Autowired
ScenarioAnswerRepository scenarioAnswerRepository;
@Autowired
CampaignRepository campaignRepository;
@Autowired
CampaignLogRepository campaignLogRepository;
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO();
try {
List<ScenarioAnswer> lst = scenarioAnswerRepository.findByScenarioQuestionIdAndCompanySiteIdAndStatus(scenarioQuestionId, companySiteId, (short) 1);
resultDTO.setData(lst);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch(Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public Long getMaxAnswerOrderId(Long scenarioQuestionId, Long companySiteId) {
try {
return scenarioAnswerRepository.getMaxAnswerOrderId(scenarioQuestionId, companySiteId);
}catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return null;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO delete(ScenarioAnswerDTO scenarioAnswerDTO) {
ResultDTO resultDTO = new ResultDTO();
CampaignLog campaignLog;
try {
//find campaign
Campaign campaign = campaignRepository.findByCampaignId(scenarioAnswerDTO.getCampaignId());
if(campaign != null) {
if (campaign.getStatus() == 0L || campaign.getStatus() == 1L) {
scenarioAnswerRepository.deleteById(scenarioAnswerDTO.scenarioAnswerId);
campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(scenarioAnswerDTO.getCompanySiteId());
campaignLog.setCreateTime(new Date());
campaignLog.setAgentId(null);
campaignLog.setTableName("SCENARIO_ANSWER");
campaignLog.setDescription("Xoa cau tra loi");
campaignLog.setCampaignId(scenarioAnswerDTO.getCampaignId());
campaignLog.setCustomerId(scenarioAnswerDTO.getScenarioAnswerId());
campaignLogRepository.save(campaignLog);
}
else {
ScenarioAnswer answer = scenarioAnswerRepository.findScenarioAnswerByScenarioAnswerId(scenarioAnswerDTO.getScenarioAnswerId());
answer.setStatus((short) 0);
answer.setDeleteTime(new Date());
scenarioAnswerRepository.save(answer);
campaignLog = new CampaignLog();
campaignLog.setCompanySiteId(scenarioAnswerDTO.getCompanySiteId());
campaignLog.setCreateTime(new Date());
campaignLog.setAgentId(null);
campaignLog.setTableName("SCENARIO_ANSWER");
campaignLog.setDescription("Chinh sua tra loi");
campaignLog.setCampaignId(scenarioAnswerDTO.getCampaignId());
campaignLog.setCustomerId(scenarioAnswerDTO.getScenarioAnswerId());
campaignLogRepository.save(campaignLog);
}
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
}
......@@ -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_CUSTOMER_MNG = "campaign-customer-mng";
// public static String getSqlQueryById(String module,
// String queryId) {
// File folder = null;
// try {
// folder = new ClassPathResource(
// "sql" + File.separator + module + File.separator + queryId + ".sql").getFile();
//
// // Read file
// if (folder.isFile()) {
// String sql = new String(Files.readAllBytes(Paths.get(folder.getAbsolutePath())));
// return sql;
// }
// } catch (IOException e) {
// return null;
// }
// return null;
// }
public static String getSqlQueryById(String module,
String queryId) {
File folder = null;
try {
folder = new ClassPathResource(
"sql" + File.separator + module + File.separator + queryId + ".sql").getFile();
// Read file
if (folder.isFile()) {
String sql = new String(Files.readAllBytes(Paths.get(folder.getAbsolutePath())));
return sql;
}
} catch (IOException e) {
return null;
}
return null;
}
public static Pageable buildPageable(BaseDTO obj) {
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;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class CustomerCustomDTO {
......
......@@ -3,7 +3,6 @@ package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
/**
......@@ -12,7 +11,7 @@ import java.util.Date;
@Getter
@Setter
public class ScenarioAnswerDTO implements Serializable {
public class ScenarioAnswerDTO {
public Long scenarioAnswerId;
public Long companySiteId;
public Long scenarioQuestionId;
......@@ -24,5 +23,4 @@ public class ScenarioAnswerDTO implements Serializable {
public Date createTime;
public Date deleteTime;
public Long mappingQuestionId;
public Long campaignId;
}
......@@ -3,9 +3,7 @@ package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author anhvd_itsol
......@@ -13,7 +11,7 @@ import java.util.List;
@Getter
@Setter
public class ScenarioQuestionDTO implements Serializable {
public class ScenarioQuestionDTO {
private Long scenarioQuestionId;
private Long companySiteId;
private Long campaignId;
......@@ -28,5 +26,4 @@ public class ScenarioQuestionDTO implements Serializable {
private Short isRequire;
private Short isDefault;
private Short answerIndex;
private List<ScenarioAnswerDTO> lstAnswers;
}
......@@ -12,26 +12,27 @@ public class VSAUsersDTO {
String userName;
Short status;
String fullName;
Long userTypeId;
Date createDate;
String description;
String staffCode;
Long managerId;
Long locationId;
Long deptId;
String deptLevel;
Long posId;
String deptName;
Long groupId;
Long siteId;
// Long userTypeId;
// Date createDate;
// String description;
// String staffCode;
// Long managerId;
// Long locationId;
// Long deptId;
// String deptLevel;
// Long posId;
// String deptName;
// Long groupId;
// Long siteId;
Long companySiteId;
Short agentType;
String mobileNumber;
String facebookId;
Short loginType;
String googleId;
String email;
Long availableTicket;
String userKazooId;
// Short agentType;
// String mobileNumber;
// String facebookId;
// Short loginType;
// String googleId;
// String email;
// Long availableTicket;
// String userKazooId;
Short filterType;
Long campaignAgentId;
}
package com.viettel.campaign.web.dto.request_dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class CampaignAgentRequestDTO {
Long companySiteId;
Long campaignId;
List<Long> agentId;
}
package com.viettel.campaign.web.dto.request_dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class CustomerDetailRequestDTO {
Long companySiteId;
Long customerListId;
Long customerId;
String title;
String type;
String valueCombobox;
Short valueCheckbox;
Date valueDate;
Long valueNumber;
String valueText;
}
package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.AgentsService;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.CampaignAgentDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignAgentRequestDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -11,10 +12,11 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
@RequestMapping("/ipcc/agents")
@CrossOrigin
@CrossOrigin(origins = "*")
public class AgentsController {
private static final Logger logger = LoggerFactory.getLogger(CampaignController.class);
......@@ -31,23 +33,46 @@ public class AgentsController {
@GetMapping("/findAll")
@ResponseBody
public ResponseEntity<ResultDTO> listAgentsByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId) {
ResultDTO result = agentsService.getAllAgentsByCompanySiteId(page, pageSize, companySiteId);
public ResponseEntity<ResultDTO> listAgentByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId) {
ResultDTO result = agentsService.getAllAgentByCompanySiteId(page, pageSize, companySiteId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@GetMapping("/findAllSelected")
@ResponseBody
public ResponseEntity<ResultDTO> listAgentsSelectedByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = agentsService.getAllAgentsSelectedByCompanySiteId(page, pageSize, companySiteId, campaignId);
public ResponseEntity<ResultDTO> listAgentSelectedByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = agentsService.getAllAgentSelectedByCompanySiteId(page, pageSize, companySiteId, campaignId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/createCampaignAgents")
@PostMapping("/createCampaignAgent")
@ResponseBody
public ResultDTO createCustomerList(@RequestBody @Valid CampaignAgentsDTO campaignAgentsDTO) {
public ResultDTO createCampaignAgent(@RequestBody @Valid CampaignAgentDTO campaignAgentDTO) {
ResultDTO result = new ResultDTO();
result = agentsService.createCampaignAgents(campaignAgentsDTO);
result = agentsService.createCampaignAgent(campaignAgentDTO);
return result;
}
@PostMapping("/deleteCampaignAgent")
@ResponseBody
public ResultDTO deleteCampaignAgentById(@RequestBody @Valid List<Long> campaignAgentId) {
ResultDTO result = new ResultDTO();
result = agentsService.deleteCampaignAgentById(campaignAgentId);
return result;
}
@GetMapping("/searchCampaignAgent")
@ResponseBody
public ResponseEntity<ResultDTO> searchCampaignAgent(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("userName") String userName, @RequestParam("fullName") String fullName) {
ResultDTO result = agentsService.searchCampaignAgentByName(page, pageSize, companySiteId, userName, fullName);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/createMultipleCampaignAgent")
@ResponseBody
public ResultDTO createMultipleCampaignAgent(@RequestBody @Valid CampaignAgentRequestDTO campaignAgentRequestDTO) {
ResultDTO result = new ResultDTO();
result = agentsService.createMultipleCampaignAgent(campaignAgentRequestDTO);
return result;
}
}
......@@ -30,7 +30,7 @@ import java.util.Map;
@RestController
@RequestMapping("/ipcc/campaign")
@CrossOrigin("*")
@CrossOrigin
public class CampaignController {
private static final Logger logger = LoggerFactory.getLogger(CampaignController.class);
......@@ -166,7 +166,7 @@ public class CampaignController {
return new ResponseEntity<byte[]>(contentReturn, headers, HttpStatus.OK);
}
@RequestMapping(value = "/changeCampaignStatus", method = RequestMethod.POST)
@RequestMapping(value = "/changeCampaignStatus", method = RequestMethod.PUT)
public ResultDTO changeCampaignStatus(@RequestBody CampaignDTO dto, HttpServletRequest request) {
dto.setSessionId(request.getSession().getId());
return campaignService.changeCampaignStatus(dto);
......
......@@ -90,6 +90,13 @@ public class CustomerController {
return result;
}
@GetMapping("/getInformation")
@ResponseBody
public ResponseEntity getAllInformation(@RequestParam("companySiteId") Long companySiteId, @RequestParam("customerListId") Long customerListId, @RequestParam("customerId") Long customerId) {
ResultDTO result = customerService.getCustomerDetailById(companySiteId, customerListId, customerId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
// --------------- customer list table ----------------- //
......@@ -120,7 +127,7 @@ public class CustomerController {
// return new ResponseEntity<>("", HttpStatus.OK);
}
@PutMapping("/updateCustomerList")
@PostMapping("/updateCustomerList")
@ResponseBody
public ResultDTO updateCustomerList(@RequestBody @Valid CustomerListDTO customerListDTO) {
ResultDTO result = new ResultDTO();
......
package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.ScenarioAnswerService;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author anhvd_itsol
......@@ -16,25 +12,4 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping("/ipcc/campaign/scenario-answer")
@CrossOrigin
public class ScenarioAnswerController {
@Autowired
ScenarioAnswerService scenarioAnswerService;
@RequestMapping(value = "/findByScenarioQuestionCompany", method= RequestMethod.GET)
public ResponseEntity<ResultDTO> findByScenarioQuestionCampaignCompany(@RequestParam Long scenarioQuestionId,
@RequestParam Long companySiteId) {
ResultDTO resultDTO = scenarioAnswerService.findByScenarioQuestionCompany(scenarioQuestionId, companySiteId);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@RequestMapping(value = "/get-max-orderId", method = RequestMethod.GET)
public Long getMaxOrderId(@RequestParam Long scenarioQuestionId, @RequestParam Long companySiteId)
{
return scenarioAnswerService.getMaxAnswerOrderId(scenarioQuestionId, companySiteId);
}
@RequestMapping(value="/delete", method = RequestMethod.POST)
public ResponseEntity<ResultDTO> deleteQuestion(@RequestBody ScenarioAnswerDTO answerDTO) {
ResultDTO resultDTO = scenarioAnswerService.delete(answerDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
}
......@@ -43,10 +43,4 @@ public class ScenarioQuestionController {
public Integer countDuplicateQuestionCode(@RequestParam String code, @RequestParam Long scenarioId, @RequestParam Long campaignId, @RequestParam Long companySiteId) {
return scenarioQuestionService.countDuplicateQuestionCode(code, scenarioId, campaignId, companySiteId);
}
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public ResponseEntity<ResultDTO> deleteQuestion(@RequestBody ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = scenarioQuestionService.delete(scenarioQuestionDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
}
server:
port: 1111
port: 9999
spring:
application:
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:
database-platform: org.hibernate.dialect.Oracle10gDialect
show-sql: true
......@@ -22,22 +34,3 @@ spring:
# bootstrap-servers: 192.168.1.201:9092
# key-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
FROM CAMPAIGN_CUSTOMER CC
FROM CAMPAIGN_CUSTOMER CC
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.IN_CAMPAIGN_STATUS = 1
AND CL.CUSTOMER_ID IS NULL
......
......@@ -3,28 +3,29 @@ SELECT
a.USER_NAME userName,
a.STATUS status,
a.FULL_NAME fullName,
a.USER_TYPE_ID userTypeId,
a.CREATE_DATE createDate,
a.DESCRIPTION description,
a.STAFF_CODE staffCode,
a.MANAGER_ID managerId,
a.LOCATION_ID locationId,
a.DEPT_ID deptId,
a.DEPT_LEVEL deptLevel,
a.POS_ID posId,
a.DEPT_NAME deptName,
a.GROUP_ID groupId,
a.SITE_ID siteId,
-- a.USER_TYPE_ID userTypeId,
-- a.CREATE_DATE createDate,
-- a.DESCRIPTION description,
-- a.STAFF_CODE staffCode,
-- a.MANAGER_ID managerId,
-- a.LOCATION_ID locationId,
-- a.DEPT_ID deptId,
-- a.DEPT_LEVEL deptLevel,
-- a.POS_ID posId,
-- a.DEPT_NAME deptName,
-- a.GROUP_ID groupId,
-- a.SITE_ID siteId,
a.COMPANY_SITE_ID companySiteId,
a.AGENT_TYPE agentType,
a.MOBILE_NUMBER mobileNumber,
a.FACEBOOK_ID facebookId,
a.LOGIN_TYPE loginType,
a.GOOGLE_ID googleId,
a.EMAIL email,
a.AVAILABLE_TICKET availableTicket,
a.USER_KAZOO_ID userKazooId,
b.FILTER_TYPE filterType
-- a.AGENT_TYPE agentType,
-- a.MOBILE_NUMBER mobileNumber,
-- a.FACEBOOK_ID facebookId,
-- a.LOGIN_TYPE loginType,
-- a.GOOGLE_ID googleId,
-- a.EMAIL email,
-- a.AVAILABLE_TICKET availableTicket,
-- a.USER_KAZOO_ID userKazooId,
b.FILTER_TYPE filterType,
b.CAMPAIGN_AGENT_ID campaignAgentId
FROM VSA_USERS a
-- LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID
-- WHERE 1 = 1
......
......@@ -23,43 +23,3 @@ from CUSTOMER_LIST_MAPPING a
where 1 = 1
and a.COMPANY_SITE_ID = :p_company_site_id
and a.CUSTOMER_LIST_ID = :p_customer_list_id
-- test dynamic field
-- select
-- a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,
-- a.COMPANY_SITE_ID companySiteId,
-- a.CUSTOMER_LIST_ID customerListId,
-- a.CUSTOMER_ID customerId,
-- b.NAME name,
-- b.DESCRIPTION description,
-- b.COMPANY_NAME companyName,
-- b.CUSTOMER_TYPE customerType,
-- b.CURRENT_ADDRESS currentAddress,
-- b.CALL_ALLOWED callAllowed,
-- b.EMAIL_ALLOWED emailAllowed,
-- b.SMS_ALLOWED smsAllowed,
-- b.IPCC_STATUS ipccStatus,
-- c.MOBILE mobileNumber,
-- d.EMAIL email,
-- e.TITLE title,
-- f.TYPE type,
-- h.VALUE_COMBOBOX valueCombobox,
-- e.VALUE_CHECKBOX valueCheckbox,
-- e.VALUE_DATE valueDate,
-- e.VALUE_NUMBER valueNumber,
-- e.VALUE_TEXT valueText
-- from CUSTOMER_LIST_MAPPING a
-- join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID
-- left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE
-- FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID
-- left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL
-- FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID
-- left join CUSTOMIZE_FIELD_OBJECT e on b.CUSTOMER_ID = e.OBJECT_ID
-- left join CUSTOMIZE_FIELDS f on e.CUSTOMIZE_FIELDS_ID = f.CUSTOMIZE_FIELD_ID
-- left join (SELECT FIELD_OPTION_VALUE_ID, NAME AS VALUE_COMBOBOX
-- FROM CUSTOMIZE_FIELD_OPTION_VALUE) h on h.FIELD_OPTION_VALUE_ID = e.FIELD_OPTION_VALUE_ID
-- where 1 = 1
-- and a.COMPANY_SITE_ID = :p_company_site_id
-- and a.CUSTOMER_LIST_ID = :p_customer_list_id
-- and e.FUNCTION_CODE = 'CUSTOMER'
select
a.COMPANY_SITE_ID companySiteId,
a.CUSTOMER_LIST_ID customerListId,
a.CUSTOMER_ID customerId,
e.TITLE title,
f.TYPE type,
h.VALUE_COMBOBOX valueCombobox,
e.VALUE_CHECKBOX valueCheckbox,
e.VALUE_DATE valueDate,
e.VALUE_NUMBER valueNumber,
e.VALUE_TEXT valueText
from CUSTOMER_LIST_MAPPING a
left join CUSTOMIZE_FIELD_OBJECT e on a.CUSTOMER_ID = e.OBJECT_ID
left join CUSTOMIZE_FIELDS f on e.CUSTOMIZE_FIELDS_ID = f.CUSTOMIZE_FIELD_ID
left join (SELECT FIELD_OPTION_VALUE_ID, NAME AS VALUE_COMBOBOX
FROM CUSTOMIZE_FIELD_OPTION_VALUE) h on h.FIELD_OPTION_VALUE_ID = e.FIELD_OPTION_VALUE_ID
where 1 = 1
and a.COMPANY_SITE_ID = :p_company_site_id
and a.CUSTOMER_LIST_ID = :p_customer_list_id
and a.CUSTOMER_ID = :p_customer_id
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