Commit 1b0cb553 authored by Vu Duy Anh's avatar Vu Duy Anh

anhvd commit scenario

parent df10e191
File added
...@@ -20,4 +20,8 @@ public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer, ...@@ -20,4 +20,8 @@ public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer,
@Query(value="SELECT MAX(orderIndex) FROM ScenarioAnswer WHERE scenarioQuestionId = :scenarioQuestionId AND companySiteId = :companySiteId AND status = 1") @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); Long getMaxAnswerOrderId(@Param("scenarioQuestionId") Long scenarioQuestionId, @Param("companySiteId") Long companySiteId);
Integer deleteScenarioAnswersByScenarioQuestionId(Long scenarioQuestionId);
ScenarioAnswer findScenarioAnswerByScenarioAnswerId(Long scenarioAnswerId);
} }
...@@ -21,4 +21,6 @@ public interface ScenarioQuestionRepository extends JpaRepository<ScenarioQuesti ...@@ -21,4 +21,6 @@ public interface ScenarioQuestionRepository extends JpaRepository<ScenarioQuesti
@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);
} }
...@@ -63,11 +63,17 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -63,11 +63,17 @@ 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();
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); params.put("p_complete_type", completeType);
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ApParamDTO.class)); list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} }
...@@ -78,10 +84,19 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -78,10 +84,19 @@ 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(sql, params, BeanPropertyRowMapper.newInstance(ApParamDTO.class)); list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} }
...@@ -96,31 +111,57 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -96,31 +111,57 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
session.beginTransaction(); session.beginTransaction();
StringBuilder sqlBuilder = new StringBuilder();
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");
sqlBuilder.append(sql); // sb.append(sql);
sqlBuilder.append(" and b.campaign_type in (:p_list_compaign_type)"); StringBuilder sb = new StringBuilder();
sqlBuilder.append(" and to_char(a.customer_id) like :p_customer_id");
sqlBuilder.append(" and to_char(a.contact_status) in (:p_list_contact_status)"); sb.append(" select b.campaign_code campaignCode,");
sqlBuilder.append(" and to_char(a.call_status) in (:p_list_survey_status)"); sb.append(" b.campaign_name campaignName,");
sqlBuilder.append(" and to_char(a.status) in (:p_list_record_status)"); 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())) { if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
sqlBuilder.append(" and a.phone_number like :p_phone_number"); sb.append(" and a.phone_number like :p_phone_number");
} }
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) { if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
sqlBuilder.append(" and b.campaign_code in (:p_list_campaign_id) "); sb.append(" and b.campaign_code in (:p_list_campaign_id) ");
} }
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sqlBuilder.append(" and upper(b.campaign_name) like :p_campaign_name"); sb.append(" and upper(b.campaign_name) like :p_campaign_name");
} }
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) { if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sqlBuilder.append(" and upper(c.user_name) like :p_user_name"); sb.append(" and upper(c.user_name) like :p_user_name");
} }
SQLQuery query = session.createSQLQuery(sqlBuilder.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", dto.getCompanySiteId()); query.setParameter("p_company_site_id", dto.getCompanySiteId());
query.setParameter("p_customer_id", "%" + dto.getCustomerId() query.setParameter("p_customer_id", "%" + dto.getCustomerId()
...@@ -221,31 +262,57 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -221,31 +262,57 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
session.beginTransaction(); session.beginTransaction();
StringBuilder sqlBuilder = new StringBuilder();
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");
sqlBuilder.append(sql); //sb.append(sql);
StringBuilder sb = new StringBuilder();
sqlBuilder.append(" and b.campaign_type in (:p_list_compaign_type)");
sqlBuilder.append(" and to_char(a.customer_id) like :p_customer_id"); sb.append("select b.campaign_code campaignCode,");
sqlBuilder.append(" and to_char(a.contact_status) in (:p_list_contact_status)"); sb.append(" b.campaign_name campaignName,");
sqlBuilder.append(" and to_char(a.call_status) in (:p_list_survey_status)"); sb.append(" c.user_name userName,");
sqlBuilder.append(" and to_char(a.status) in (:p_list_record_status)"); 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())) { if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
sqlBuilder.append(" and a.phone_number like :p_phone_number"); sb.append(" and a.phone_number like :p_phone_number");
} }
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) { if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
sqlBuilder.append(" and b.campaign_code in (:p_list_campaign_id) "); sb.append(" and b.campaign_code in (:p_list_campaign_id) ");
} }
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sqlBuilder.append(" and upper(b.campaign_name) like :p_campaign_name"); sb.append(" and upper(b.campaign_name) like :p_campaign_name");
} }
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) { if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sqlBuilder.append(" and upper(c.user_name) like :p_user_name"); sb.append(" and upper(c.user_name) like :p_user_name");
} }
SQLQuery query = session.createSQLQuery(sqlBuilder.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", dto.getCompanySiteId()); query.setParameter("p_company_site_id", dto.getCompanySiteId());
query.setParameter("p_customer_id", "%" + dto.getCustomerId() query.setParameter("p_customer_id", "%" + dto.getCustomerId()
......
...@@ -32,9 +32,30 @@ public class UserActionLogRepositoryImpl implements UserActionLogRepositoryCusto ...@@ -32,9 +32,30 @@ 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"));
SQLQuery query = session.createSQLQuery(sqlStr.toString()); 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());
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.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
...@@ -10,4 +11,6 @@ public interface ScenarioAnswerService { ...@@ -10,4 +11,6 @@ public interface ScenarioAnswerService {
ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId); ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId);
Long getMaxAnswerOrderId(Long scenarioQuestionId, Long companySiteId); Long getMaxAnswerOrderId(Long scenarioQuestionId, Long companySiteId);
ResultDTO delete(ScenarioAnswerDTO scenarioAnswerDTO);
} }
...@@ -15,4 +15,6 @@ public interface ScenarioQuestionService { ...@@ -15,4 +15,6 @@ 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);
} }
...@@ -74,16 +74,47 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -74,16 +74,47 @@ public class AgentsServiceImpl implements AgentsService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params")); // sb.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"); StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(" WHERE 1 = 1");
sqlStrBuilder.append(" AND a.COMPANY_SITE_ID = :p_company_site_id"); sb.append("SELECT");
sqlStrBuilder.append(" AND b.AGENT_ID IS NULL"); sb.append(" a.USER_ID userId,");
sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC"); sb.append(" a.USER_NAME userName,");
sb.append(" a.STATUS status,");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); sb.append(" a.FULL_NAME fullName,");
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);
...@@ -157,16 +188,46 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -157,16 +188,46 @@ public class AgentsServiceImpl implements AgentsService {
} }
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); // StringBuilder sb = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params")); // sb.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");
sqlStrBuilder.append(" WHERE 1 = 1"); sb.append("SELECT");
sqlStrBuilder.append(" AND b.COMPANY_SITE_ID = :p_company_site_id"); sb.append(" a.USER_ID userId,");
sqlStrBuilder.append(" AND b.CAMPAIGN_ID = :p_campaign_id"); 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(" 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);
......
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.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.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.utils.Constants;
import com.viettel.campaign.web.dto.ResultDTO; 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.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -17,13 +25,21 @@ import java.util.List; ...@@ -17,13 +25,21 @@ import java.util.List;
*/ */
@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); private static final Logger logger = LogManager.getLogger(ScenarioQuestionServiceImpl.class);
@Autowired @Autowired
ScenarioAnswerRepository scenarioAnswerRepository; ScenarioAnswerRepository scenarioAnswerRepository;
@Autowired
CampaignRepository campaignRepository;
@Autowired
CampaignLogRepository campaignLogRepository;
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId) { public ResultDTO findByScenarioQuestionCompany(Long scenarioQuestionId, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
...@@ -40,6 +56,7 @@ public class ScenarioAnswerServiceImpl implements ScenarioAnswerService { ...@@ -40,6 +56,7 @@ public class ScenarioAnswerServiceImpl implements ScenarioAnswerService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public Long getMaxAnswerOrderId(Long scenarioQuestionId, Long companySiteId) { public Long getMaxAnswerOrderId(Long scenarioQuestionId, Long companySiteId) {
try { try {
return scenarioAnswerRepository.getMaxAnswerOrderId(scenarioQuestionId, companySiteId); return scenarioAnswerRepository.getMaxAnswerOrderId(scenarioQuestionId, companySiteId);
...@@ -48,4 +65,52 @@ public class ScenarioAnswerServiceImpl implements ScenarioAnswerService { ...@@ -48,4 +65,52 @@ public class ScenarioAnswerServiceImpl implements ScenarioAnswerService {
} }
return null; 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.CampaignLog; import com.viettel.campaign.model.ccms_full.*;
import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.model.ccms_full.ScenarioAnswer;
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.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;
...@@ -42,6 +40,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -42,6 +40,9 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
@Autowired @Autowired
ScenarioAnswerRepository scenarioAnswerRepository; ScenarioAnswerRepository scenarioAnswerRepository;
@Autowired
CampaignRepository campaignRepository;
@Autowired @Autowired
ModelMapper modelMapper; ModelMapper modelMapper;
...@@ -50,7 +51,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -50,7 +51,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.findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatusOrderByOrderIndex(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);
...@@ -127,7 +128,7 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -127,7 +128,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;
...@@ -138,10 +139,86 @@ public class ScenarioQuestionServiceImpl implements ScenarioQuestionService { ...@@ -138,10 +139,86 @@ 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;
}
} }
...@@ -24,4 +24,5 @@ public class ScenarioAnswerDTO implements Serializable { ...@@ -24,4 +24,5 @@ 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;
} }
...@@ -28,7 +28,7 @@ import java.util.Map; ...@@ -28,7 +28,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);
...@@ -143,7 +143,7 @@ public class CampaignController { ...@@ -143,7 +143,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.PUT) @RequestMapping(value = "/changeCampaignStatus", method = RequestMethod.POST)
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);
......
...@@ -2,6 +2,7 @@ package com.viettel.campaign.web.rest; ...@@ -2,6 +2,7 @@ package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.ScenarioAnswerService; import com.viettel.campaign.service.ScenarioAnswerService;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioAnswerDTO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -30,4 +31,10 @@ public class ScenarioAnswerController { ...@@ -30,4 +31,10 @@ public class ScenarioAnswerController {
{ {
return scenarioAnswerService.getMaxAnswerOrderId(scenarioQuestionId, 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);
}
} }
...@@ -44,4 +44,9 @@ public class ScenarioQuestionController { ...@@ -44,4 +44,9 @@ public class ScenarioQuestionController {
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);
}
} }
...@@ -3,18 +3,6 @@ server: ...@@ -3,18 +3,6 @@ server:
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
......
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