Commit 9a25c32d authored by Vu Duy Anh's avatar Vu Duy Anh

anhvd accept merge

parents b184e2d6 50b7c1cf
File mode changed from 100755 to 100644
This diff is collapsed.
...@@ -49,8 +49,8 @@ ...@@ -49,8 +49,8 @@
<dependency> <dependency>
<groupId>com.oracle</groupId> <groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId> <artifactId>ojdbc7</artifactId>
<!-- <scope>system</scope>--> <scope>system</scope>
<!-- <systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>--> <systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>
<version>1.0</version> <version>1.0</version>
</dependency> </dependency>
<dependency> <dependency>
...@@ -151,6 +151,16 @@ ...@@ -151,6 +151,16 @@
<version>3.4</version> <version>3.4</version>
<type>jar</type> <type>jar</type>
</dependency> </dependency>
<dependency>
<groupId>com.github.tennaito</groupId>
<artifactId>rsql-jpa</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>cz.jirutka.rsql</groupId>
<artifactId>rsql-parser</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies> </dependencies>
......
...@@ -15,7 +15,6 @@ public class ServiceCampaignApplication { ...@@ -15,7 +15,6 @@ public class ServiceCampaignApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(ServiceCampaignApplication.class, args); SpringApplication.run(ServiceCampaignApplication.class, args);
RedisUtil redis = new RedisUtil(Config.redisAddress,Config.redisTimeout); RedisUtil redis = new RedisUtil(Config.redisAddress,Config.redisTimeout);
redis.setup(); redis.setup();
} }
......
...@@ -5,15 +5,18 @@ import lombok.Setter; ...@@ -5,15 +5,18 @@ import lombok.Setter;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
@Entity @Entity
@Table(name = "CUSTOMER_CONTACT") @Table(name = "CUSTOMER_CONTACT")
@Getter @Getter
@Setter @Setter
public class CustomerContact { public class CustomerContact implements Serializable {
@Id @Id
@Basic(optional = false) @Basic(optional = false)
@GeneratedValue(generator = "customer_contact_seq", strategy = GenerationType.IDENTITY)
@SequenceGenerator(name = "customer_contact_seq", sequenceName = "customer_contact_seq", allocationSize = 1)
@NotNull @NotNull
@Column(name = "CONTACT_ID") @Column(name = "CONTACT_ID")
private Long contactId; private Long contactId;
......
package com.viettel.campaign.model.ccms_full;
public class CustomizeField {
}
...@@ -17,5 +17,5 @@ public interface AgentsRepository extends JpaRepository<Agents, String> { ...@@ -17,5 +17,5 @@ public interface AgentsRepository extends JpaRepository<Agents, String> {
@Modifying @Modifying
@Query(value = "UPDATE Agents SET campaignSystemStatus = :campaignSystemStatus WHERE agentId = :agentId") @Query(value = "UPDATE Agents SET campaignSystemStatus = :campaignSystemStatus WHERE agentId = :agentId")
void updateAgentLogoutFromCampaign(@Param("agentId") Long agentId, @Param("campaignSystemStatus") String campaignSystemStatus); void updateAgentLogoutFromCampaign(@Param("agentId") String agentId, @Param("campaignSystemStatus") String campaignSystemStatus);
} }
...@@ -14,7 +14,7 @@ import java.util.List; ...@@ -14,7 +14,7 @@ import java.util.List;
@Repository @Repository
public interface CampaignCfgRepository extends JpaRepository<CampaignCfg, Long>{ public interface CampaignCfgRepository extends JpaRepository<CampaignCfg, Long>{
@Query(" select u FROM CampaignCfg u WHERE u.status = 1") @Query("FROM CampaignCfg u WHERE u.status = 1 AND u.completeValue NOT IN (1,2,3,4)")
Page<CampaignCfg> findAll(Pageable pageable); Page<CampaignCfg> findAll(Pageable pageable);
......
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.CampaignCustomerListColumn;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Repository
@Transactional(DataSourceQualify.CCMS_FULL)
public interface CampaignCustomerListColumnRepository extends JpaRepository<CampaignCustomerListColumn, Long>, CampaignCustomerListColumnRepositoryCustom {
List<CampaignCustomerListColumn> findByCampaignIdAndCompanySiteId(Long campaignId, Long companaySiteId);
CampaignCustomerListColumn findByCampaignCusListColId(Long campaignCusListColId);
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.request_dto.CampaignCustomerListColumnRequestDTO;
import java.util.List;
public interface CampaignCustomerListColumnRepositoryCustom {
List<CampaignCustomerListColumnRequestDTO> getCustomerInfor(Long companySiteId, Long customerId, Long campaignId);
}
...@@ -36,6 +36,31 @@ public interface CampaignCustomerRepository extends JpaRepository<CampaignCustom ...@@ -36,6 +36,31 @@ public interface CampaignCustomerRepository extends JpaRepository<CampaignCustom
CampaignCustomer findCampaignCustomerByCampaignCustomerId(Long id); CampaignCustomer findCampaignCustomerByCampaignCustomerId(Long id);
@Query(value = "select C.NAME, " +
"C.EMAIL, " +
"C.PLACE_OF_BIRTH, " +
"C.AREA_CODE, " +
"C.COMPANY_NAME, " +
"C.CURRENT_ADDRESS, " +
"C.CUSTOMER_TYPE, " +
"C.DATE_OF_BIRTH, " +
"C.CUSTOMER_ID,"+
"C.USERNAME,"+
"C.GENDER, CF.TITLE " +
// " from CAMPAIGN_COMPLETE_CODE cm " +
"from CUSTOMER C " +
"left join CUSTOMIZE_FIELDS CF " +
"on C.CUSTOMER_ID = CF.CUSTOMIZE_FIELD_ID "+
"where CF.FUNCTION_CODE = 'CUSTORMER' and c.STATUS =1 and CF.ACTIVE =1 and CF.SITE_ID =?"
, nativeQuery = true)
Long searchCustomer(@Param("site_id") Long pSiteId);
@Query(value = "SELECT * FROM CAMPAIGN_CUSTOMER CC " + @Query(value = "SELECT * FROM CAMPAIGN_CUSTOMER CC " +
"WHERE CC.STATUS = 0 " + "WHERE CC.STATUS = 0 " +
"AND CC.CAMPAIGN_ID = :campaignId " + "AND CC.CAMPAIGN_ID = :campaignId " +
...@@ -50,5 +75,17 @@ public interface CampaignCustomerRepository extends JpaRepository<CampaignCustom ...@@ -50,5 +75,17 @@ public interface CampaignCustomerRepository extends JpaRepository<CampaignCustom
"AND CC.CUSTOMER_LIST_ID = :customerListId", nativeQuery = true) "AND CC.CUSTOMER_LIST_ID = :customerListId", nativeQuery = true)
List<CampaignCustomer> findCustomerContacted(@Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId, @Param("customerListId") Long customerListId); List<CampaignCustomer> findCustomerContacted(@Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId, @Param("customerListId") Long customerListId);
@Query(value = "with status_customer as (\n" +
"select complete_value \n" +
"from campaign_complete_code\n" +
"where complete_value <> 4\n" +
" and is_finish <> 1\n" +
" and campaign_type = 1\n" +
" and company_site_id = :p_company_site_id\n" +
")\n" +
"select * from campaign_customer\n" +
"where campaign_id = :p_campaign_id\n" +
" and customer_list_id = :p_cus_list_id\n" +
" and (status = 0 or status in (select * from status_customer))", nativeQuery = true)
List<CampaignCustomer> findListCustomerToDel(@Param("p_company_site_id") Long companySiteId, @Param("p_campaign_id") Long campaignId, @Param("p_cus_list_id") Long customerListId);
} }
...@@ -32,5 +32,9 @@ public interface CampaignRepositoryCustom { ...@@ -32,5 +32,9 @@ public interface CampaignRepositoryCustom {
ResultDTO getCustomerList(CampaignRequestDTO dto); ResultDTO getCustomerList(CampaignRequestDTO dto);
ResultDTO getCustomerChoosenList(CampaignRequestDTO dto); ResultDTO getCustomerChoosenList(CampaignRequestDTO dto);
ResultDTO getCampaignCustomerInformation(CampaignRequestDTO dto);
ResultDTO getCustomerListInformation(CampaignRequestDTO dto);
//</editor-fold> //</editor-fold>
} }
...@@ -12,5 +12,5 @@ public interface CustomerContactRepository extends JpaRepository<CustomerContact ...@@ -12,5 +12,5 @@ public interface CustomerContactRepository extends JpaRepository<CustomerContact
@Query("FROM CustomerContact WHERE status = 1 AND customerId = :customerId AND contactType = :contactType AND (contact IS NULL OR UPPER(contact) LIKE UPPER(concat('%', :contact, '%')))") @Query("FROM CustomerContact WHERE status = 1 AND customerId = :customerId AND contactType = :contactType AND (contact IS NULL OR UPPER(contact) LIKE UPPER(concat('%', :contact, '%')))")
List<CustomerContact> findByCustomerIdAndAndContactTypeAndContact(@Param("customerId") Long customerId, @Param("contactType") Short contactType, @Param("contact") String contact, Pageable pageable); List<CustomerContact> findByCustomerIdAndAndContactTypeAndContact(@Param("customerId") Long customerId, @Param("contactType") Short contactType, @Param("contact") String contact, Pageable pageable);
CustomerContact findCustomerContactByContactTypeAndContactAndIsDirectLine(Short contactType, String contact, Short isDirectLine); CustomerContact findCustomerContactByContactEquals(String contact);
} }
package com.viettel.campaign.repository.ccms_full; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.Customer; import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CustomizeRequestDTo;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
...@@ -32,4 +34,11 @@ public interface CustomerRepository extends JpaRepository<Customer, Long> { ...@@ -32,4 +34,11 @@ public interface CustomerRepository extends JpaRepository<Customer, Long> {
@Query("select c from Customer c left join com.viettel.campaign.model.ccms_full.CustomerTime ct on c.customerId = ct.customerId " + @Query("select c from Customer c left join com.viettel.campaign.model.ccms_full.CustomerTime ct on c.customerId = ct.customerId " +
"where c.ipccStatus = 'locked' and c.siteId =?1 and ct.endTime <= ?2") "where c.ipccStatus = 'locked' and c.siteId =?1 and ct.endTime <= ?2")
List<Customer> findAllByCondition(Long siteId, Date endTime); List<Customer> findAllByCondition(Long siteId, Date endTime);
@Query(value = "select * from customer a\n" +
"left join customer_list_mapping b on a.customer_id = b.customer_id\n" +
"where b.customer_list_id = :p_customer_list_id\n" +
" and a.customer_id not in (select cc.customer_id from campaign_customer cc where cc.campaign_id = :p_campaign_id and cc.customer_list_id = :p_customer_list_id)", nativeQuery = true)
List<Customer> findAllCutomerNotInCampagin(@Param("p_customer_list_id") Long customerListId, @Param("p_campaign_id") Long campaignId);
} }
package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.repository.ccms_full.CampaignCustomerListColumnRepositoryCustom;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignCustomerListColumnRequestDTO;
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.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;
@Repository
public class CampaignCustomerListColumnRepositoryImpl implements CampaignCustomerListColumnRepositoryCustom {
@Override
public List<CampaignCustomerListColumnRequestDTO> getCustomerInfor(Long companySiteId, Long customerId, Long campaignId) {
ResultDTO result = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
List<CampaignCustomerListColumnRequestDTO> data = new ArrayList<>();
Session session = sessionFactory.openSession();
session.beginTransaction();
try {
StringBuilder sb = new StringBuilder();
sb.append("SELECT");
sb.append(" a.CUSTOMIZE_FIELD_TITLE customizeFieldTitle,");
sb.append(" b.VALUE_TEXT valueText,");
sb.append(" b.VALUE_NUMBER valueNumber,");
sb.append(" b.VALUE_DATE valueDate,");
sb.append(" b.VALUE_CHECKBOX valueCheckbox,");
sb.append(" c.TYPE type,");
sb.append(" d.NAME valueCombobox");
sb.append(" FROM CAMPAIGN_CUSTOMERLIST_COLUMN a");
sb.append(" JOIN CUSTOMIZE_FIELD_OBJECT b ON a.CUSTOMIZE_FIELD_ID = b.CUSTOMIZE_FIELDS_ID");
sb.append(" JOIN CUSTOMIZE_FIELDS c ON a.CUSTOMIZE_FIELD_ID = c.CUSTOMIZE_FIELD_ID");
sb.append(" LEFT JOIN CUSTOMIZE_FIELD_OPTION_VALUE d ON b.FIELD_OPTION_VALUE_ID = d.FIELD_OPTION_VALUE_ID");
sb.append(" WHERE 1 = 1");
sb.append(" AND b.FUNCTION_CODE = 'CUSTOMER'");
sb.append(" AND a.COMPANY_SITE_ID = :p_company_site_id");
sb.append(" AND b.OBJECT_ID = :p_customer_id");
sb.append(" AND a.CAMPAIGN_ID = :p_campaign_id");
SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_id", customerId);
query.setParameter("p_campaign_id", campaignId);
query.addScalar("customizeFieldTitle", new StringType());
query.addScalar("valueText", new StringType());
query.addScalar("valueNumber", new LongType());
query.addScalar("valueDate", new DateType());
query.addScalar("valueCheckbox", new ShortType());
query.addScalar("type", new StringType());
query.addScalar("valueCombobox", new StringType());
query.setResultTransformer(Transformers.aliasToBean(CampaignCustomerListColumnRequestDTO.class));
data = query.list();
} catch (Exception e) {
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
} finally {
session.close();
}
return data;
}
}
...@@ -28,7 +28,11 @@ public interface CampaignExecuteService { ...@@ -28,7 +28,11 @@ public interface CampaignExecuteService {
ResultDTO getExecuteCampaign(CampaignRequestDTO requestDto); ResultDTO getExecuteCampaign(CampaignRequestDTO requestDto);
ResultDTO getCall(CampaignCustomerDTO dto); ResultDTO getCustomer(CampaignCustomerDTO dto);
ResultDTO updateCustomerResult(ContactCustResultDTO dto);
ResultDTO getCustomerComplete(ReceiveCustLogDTO dto);
ResultDTO getCallLog(ReceiveCustLogDTO dto); ResultDTO getCallLog(ReceiveCustLogDTO dto);
...@@ -39,4 +43,6 @@ public interface CampaignExecuteService { ...@@ -39,4 +43,6 @@ public interface CampaignExecuteService {
ResultDTO countRecallCustomer(Long companySiteId, Long agentId); ResultDTO countRecallCustomer(Long companySiteId, Long agentId);
ResultDTO getCustomerRecall(Long campaignId, Long customerId); ResultDTO getCustomerRecall(Long campaignId, Long customerId);
ResultDTO getCustomerInfor(Long companySiteId, Long customerId, Long campaignId);
} }
...@@ -64,6 +64,14 @@ public interface CampaignService { ...@@ -64,6 +64,14 @@ public interface CampaignService {
ResultDTO addCustomerListToCampaign(CampaignRequestDTO dto); ResultDTO addCustomerListToCampaign(CampaignRequestDTO dto);
ResultDTO deleteCustomerListFromCampaign(CampaignRequestDTO dto); ResultDTO deleteCustomerListFromCampaign(CampaignRequestDTO dto);
ResultDTO saveFieldCustomer(CampaignRequestDTO dto);
ResultDTO getCampaignCustomerInformation(CampaignRequestDTO dto);
ResultDTO getCustomerListInformation(CampaignRequestDTO dto);
ResultDTO saveCustomerCampaign(CampaignRequestDTO dto);
//</editor-fold> //</editor-fold>
} }
...@@ -6,6 +6,7 @@ import com.viettel.campaign.model.ccms_full.CustomizeFieldObject; ...@@ -6,6 +6,7 @@ import com.viettel.campaign.model.ccms_full.CustomizeFieldObject;
import com.viettel.campaign.model.ccms_full.CustomizeFields; import com.viettel.campaign.model.ccms_full.CustomizeFields;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
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.CustomizeRequestDTo;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import com.viettel.econtact.filter.UserSession; import com.viettel.econtact.filter.UserSession;
...@@ -70,4 +71,9 @@ public interface CustomerService { ...@@ -70,4 +71,9 @@ public interface CustomerService {
Map<String, Object> readAndValidateCustomer(String path, List<CustomizeFields> headerDTOS, UserSession userSession, Long customerListId); Map<String, Object> readAndValidateCustomer(String path, List<CustomizeFields> headerDTOS, UserSession userSession, Long customerListId);
List<CustomizeFieldObject> getCustomizeField(Long customerId); List<CustomizeFieldObject> getCustomizeField(Long customerId);
List<Customer> searchByQuery(String queryString);
Long countByQuery(String queryString);
// Map<String, CustomizeRequestDTo> searchCustomer();
//// List<CustomizeFields> searchCustomize();
ResultDTO searchCustomizeFields(CustomizeRequestDTo customizeFields);
} }
...@@ -221,7 +221,13 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -221,7 +221,13 @@ public class AgentsServiceImpl implements AgentsService {
try { try {
if (campaignAgentDTO != null) { if (campaignAgentDTO != null) {
// insert // insert
campaignAgent = campaignAgentMapper.toPersistenceBean(campaignAgentDTO); campaignAgent.setAgentId(campaignAgentDTO.getAgentId());
campaignAgent.setStatus(0);
campaignAgent.setReSchedule(0L);
campaignAgent.setFilterType((short) 0);
campaignAgent.setCompanySiteId(campaignAgentDTO.getCompanySiteId());
campaignAgent.setCampaignId(campaignAgentDTO.getCampaignId());
campaignAgentRepository.save(campaignAgent); campaignAgentRepository.save(campaignAgent);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
......
...@@ -81,6 +81,9 @@ public class CampaignCfgServiceImpl implements CampaignCfgService { ...@@ -81,6 +81,9 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
sb.append(" where 1 = 1"); sb.append(" where 1 = 1");
sb.append(" AND STATUS = 1"); sb.append(" AND STATUS = 1");
sb.append(" and COMPANY_SITE_ID = :p_company_site_id"); sb.append(" and COMPANY_SITE_ID = :p_company_site_id");
sb.append(" and COMPLETE_VALUE not in (1,2,3,4)");
sb.append("ORDER BY to_number(COMPLETE_VALUE) ");
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
...@@ -290,7 +293,7 @@ public class CampaignCfgServiceImpl implements CampaignCfgService { ...@@ -290,7 +293,7 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
sb.append("SELECT max(to_number(COMPLETE_VALUE)) completeValue, COMPANY_SITE_ID "); sb.append("SELECT max(to_number(COMPLETE_VALUE)) completeValue, COMPANY_SITE_ID ");
sb.append(" companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id "); sb.append(" companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id ");
sb.append(" GROUP BY COMPANY_SITE_ID"); sb.append(" GROUP BY COMPANY_SITE_ID ");
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
......
...@@ -4,14 +4,13 @@ import com.viettel.campaign.config.DataSourceQualify; ...@@ -4,14 +4,13 @@ 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.CampaignCustomer; import com.viettel.campaign.model.ccms_full.CampaignCustomer;
import com.viettel.campaign.model.ccms_full.ContactCustResult; import com.viettel.campaign.model.ccms_full.ContactCustResult;
import com.viettel.campaign.model.ccms_full.ReceiveCustLog;
import com.viettel.campaign.repository.acd_full.AgentsRepository; import com.viettel.campaign.repository.acd_full.AgentsRepository;
import com.viettel.campaign.repository.ccms_full.*; import com.viettel.campaign.repository.ccms_full.*;
import com.viettel.campaign.service.CampaignExecuteService; import com.viettel.campaign.service.CampaignExecuteService;
import com.viettel.campaign.utils.BundleUtils; import com.viettel.campaign.utils.*;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.RedisUtil;
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.CampaignCustomerListColumnRequestDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import com.viettel.econtact.filter.UserSession; import com.viettel.econtact.filter.UserSession;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
...@@ -63,6 +62,9 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -63,6 +62,9 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Autowired @Autowired
TimeRangeDialModeRepository rangeDialModeRepository; TimeRangeDialModeRepository rangeDialModeRepository;
@Autowired
CampaignCustomerListColumnRepository campaignCustomerListColumnRepository;
//<editor-fold: hungtt> //<editor-fold: hungtt>
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
...@@ -245,9 +247,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -245,9 +247,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId())); //TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
if (agents.getUserStatus() != null && agents.getCampaignSystemStatus() != null) { if (agents.getUserStatus() != null && agents.getCampaignSystemStatus() != null) {
// tạm thời bỏ qua điều kiện này vì DB ACD không thực thi update được if (agents.getUserStatus().equalsIgnoreCase("CALLOUT") && agents.getCampaignSystemStatus().equalsIgnoreCase("AVAILABLE")) {
// if (agents.getUserStatus().equalsIgnoreCase("CALLOUT") && agents.getCampaignSystemStatus().equalsIgnoreCase("AVAILABLE")) {
if (agents.getCampaignSystemStatus().equalsIgnoreCase("AVAILABLE")) {
//if (zoneDialMode != null && zoneDialMode.getDialMode().equals(0) || rangeDialMode != null && rangeDialMode.getDialMode().equals(0)) //if (zoneDialMode != null && zoneDialMode.getDialMode().equals(0) || rangeDialMode != null && rangeDialMode.getDialMode().equals(0))
data.put("dialModeManual", "1"); data.put("dialModeManual", "1");
} }
...@@ -269,9 +269,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -269,9 +269,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
Agents agents = agentsRepository.findByAgentId(requestDto.getAgentId()); Agents agents = agentsRepository.findByAgentId(requestDto.getAgentId());
//TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId())); //TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId())); //TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
// tạm thời bỏ qua điều kiện này vì DB ACD không thực thi update được if (agents.getUserStatus().equalsIgnoreCase("CALLOUT") && agents.getCampaignSystemStatus().equalsIgnoreCase("LOGOUT")) {
// if (agents.getUserStatus().equalsIgnoreCase("CALLOUT") && agents.getCampaignSystemStatus().equalsIgnoreCase("LOGOUT")) {
if (agents.getCampaignSystemStatus().equalsIgnoreCase("LOGOUT")) {
//if (zoneDialMode != null && zoneDialMode.getDialMode().equals(0) || rangeDialMode != null && rangeDialMode.getDialMode().equals(0)) //if (zoneDialMode != null && zoneDialMode.getDialMode().equals(0) || rangeDialMode != null && rangeDialMode.getDialMode().equals(0))
// update acd_full.agents table // update acd_full.agents table
Agents a = new Agents(); Agents a = new Agents();
...@@ -279,6 +277,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -279,6 +277,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
a.setAgentId(requestDto.getAgentId()); a.setAgentId(requestDto.getAgentId());
a.setCampaignSystemStatus("AVAILABLE"); a.setCampaignSystemStatus("AVAILABLE");
a.setCurrentCampaignId(Long.parseLong(requestDto.getCampaignId())); a.setCurrentCampaignId(Long.parseLong(requestDto.getCampaignId()));
a.setUpdateDate(new Date());
agentsRepository.save(a); agentsRepository.save(a);
// update ccms_full.campaign_agent table // update ccms_full.campaign_agent table
campaignAgentRepository.updateCampaignAgentSetStatus(Long.parseLong(requestDto.getAgentId()), Long.parseLong(requestDto.getCampaignId()), 1); campaignAgentRepository.updateCampaignAgentSetStatus(Long.parseLong(requestDto.getAgentId()), Long.parseLong(requestDto.getCampaignId()), 1);
...@@ -292,7 +291,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -292,7 +291,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
} }
@Override @Override
public ResultDTO getCall(CampaignCustomerDTO dto) { public ResultDTO getCustomer(CampaignCustomerDTO dto) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
//Agents agents = agentsRepository.findByAgentId(dto.getAgentId()); //Agents agents = agentsRepository.findByAgentId(dto.getAgentId());
...@@ -442,6 +441,26 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -442,6 +441,26 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return result; return result;
} }
@Override
public ResultDTO getCustomerComplete(ReceiveCustLogDTO dto) {
ResultDTO result = new ResultDTO();
try {
ReceiveCustLog rclResult = custLogRepository.save(modelMapper.map(dto, ReceiveCustLog.class));
agentsRepository.updateAgentLogoutFromCampaign(dto.getAgentId().toString(), "NOT AVAILABLE");
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setData(rclResult);
} catch (Exception e) {
e.printStackTrace();
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
}
return result;
}
@Override @Override
public ResultDTO getCallLog(ReceiveCustLogDTO dto) { public ResultDTO getCallLog(ReceiveCustLogDTO dto) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
...@@ -467,7 +486,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -467,7 +486,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
try { try {
agentsRepository.updateAgentLogoutFromCampaign(Long.parseLong(dto.getAgentId()), "LOGOUT"); agentsRepository.updateAgentLogoutFromCampaign(dto.getAgentId(), "LOGOUT");
campaignAgentRepository.updateCampaignAgentSetStatus(Long.parseLong(dto.getAgentId()), Long.parseLong(dto.getCampaignId()), 0); campaignAgentRepository.updateCampaignAgentSetStatus(Long.parseLong(dto.getAgentId()), Long.parseLong(dto.getCampaignId()), 0);
result.setErrorCode(Constants.ApiErrorCode.SUCCESS); result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
...@@ -500,6 +519,32 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -500,6 +519,32 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return result; return result;
} }
@Override
public ResultDTO updateCustomerResult(ContactCustResultDTO dto) {
ResultDTO result = new ResultDTO();
try {
ContactCustResult ccr = ccResultRepository.getOne(dto.getContactCustResultId());
ccr.setDurationCall(0L);
ccr.setStartCall(new Date());
ccr.setReceiveTime(new Date());
ccr.setPreEndTime(new Date());
ccr.setEndTime(new Date());
ccr.setWaitTime(0L);
ContactCustResult resultUpdate = ccResultRepository.save(ccr);
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setData(resultUpdate);
} catch (Exception e) {
e.printStackTrace();
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
}
return result;
}
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO countRecallCustomer(Long companySiteId, Long agentId) { public ResultDTO countRecallCustomer(Long companySiteId, Long agentId) {
Long count = campaignCustomerRepository.countRecallCustomer(companySiteId, agentId); Long count = campaignCustomerRepository.countRecallCustomer(companySiteId, agentId);
...@@ -533,4 +578,26 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -533,4 +578,26 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return resultDTO; return resultDTO;
} }
@Override
public ResultDTO getCustomerInfor(Long companySiteId, Long customerId, Long campaignId) {
ResultDTO resultDTO = new ResultDTO();
if (DataUtil.isNullOrZero(companySiteId)) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
List<CampaignCustomerListColumnRequestDTO> data = campaignCustomerListColumnRepository.getCustomerInfor(companySiteId, customerId, campaignId);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(data);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
} }
...@@ -12,7 +12,6 @@ import com.viettel.campaign.utils.DataUtil; ...@@ -12,7 +12,6 @@ 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.*;
...@@ -67,6 +66,12 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -67,6 +66,12 @@ public class CampaignServiceImpl implements CampaignService {
@Autowired @Autowired
CampaignCustomerRepository campaignCustomerRepository; CampaignCustomerRepository campaignCustomerRepository;
@Autowired
CampaignCustomerListColumnRepository campaignCustomerListColumnRepository;
@Autowired
CustomerRepository customerRepository;
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO search(CampaignRequestDTO requestDto) { public ResultDTO search(CampaignRequestDTO requestDto) {
...@@ -370,6 +375,7 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -370,6 +375,7 @@ public class CampaignServiceImpl implements CampaignService {
return resultDTO; return resultDTO;
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO updateCampaign(CampaignDTO dto) { public ResultDTO updateCampaign(CampaignDTO dto) {
...@@ -561,6 +567,109 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -561,6 +567,109 @@ public class CampaignServiceImpl implements CampaignService {
return resultDTO; return resultDTO;
} }
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO saveFieldCustomer(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO();
List<FieldsToShowDTO> list = dto.getLstFiedCustomer();
long campaignId = Long.parseLong(dto.getCampaignId());
long companySiteId = Long.parseLong(dto.getCompanySiteId());
List<CampaignCustomerListColumn> listColumns = campaignCustomerListColumnRepository.findByCampaignIdAndCompanySiteId(campaignId, companySiteId);
try {
// Them moi cac truong hien thi
for (FieldsToShowDTO fieldsToShowDTO : list) {
if (fieldsToShowDTO.getId() == null) {
CampaignCustomerListColumn entity = new CampaignCustomerListColumn();
entity.setCampaignId(campaignId);
entity.setCompanySiteId(companySiteId);
if (fieldsToShowDTO.getIsFix()) {
entity.setColumnName(fieldsToShowDTO.getColumnName());
} else {
entity.setCustomizeFieldId(fieldsToShowDTO.getCustomizeFieldId());
entity.setCustomizeFieldTitle(fieldsToShowDTO.getColumnTitle());
}
entity.setOrderIndex((long) (list.indexOf(fieldsToShowDTO) + 1));
campaignCustomerListColumnRepository.save(entity);
}
}
// Cap nhat cac truong da co san
for (FieldsToShowDTO fieldsToShowDTO : list) {
if (fieldsToShowDTO.getId() != null) {
listColumns.removeIf(p -> p.getCampaignCusListColId() == fieldsToShowDTO.getId());
CampaignCustomerListColumn entity = campaignCustomerListColumnRepository.findByCampaignCusListColId(fieldsToShowDTO.getId());
entity.setOrderIndex((long) (list.indexOf(fieldsToShowDTO) + 1));
campaignCustomerListColumnRepository.save(entity);
}
}
// Xoa cac truong khong con hien thi nua
for (CampaignCustomerListColumn entity : listColumns) {
campaignCustomerListColumnRepository.delete(entity);
}
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
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCampaignCustomerInformation(CampaignRequestDTO dto) {
return campaignRepositoryCustom.getCampaignCustomerInformation(dto);
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCustomerListInformation(CampaignRequestDTO dto) {
return campaignRepositoryCustom.getCustomerListInformation(dto);
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO saveCustomerCampaign(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO();
long campaignId = Long.parseLong(dto.getCampaignId());
long companySiteId = Long.parseLong(dto.getCompanySiteId());
List<CustomerListDTO> listCustomerDto = dto.getLstCustomerCampaign();
try {
// Thuc hien them giam khach hang
for (CustomerListDTO customerListDTO : listCustomerDto) {
if (customerListDTO.getTotalCusAddRemove() > 0) { // Them khach hang
// Lay ra danh sach khach hang phu hop de them
List<Customer> listCustomerToAdd = customerRepository.findAllCutomerNotInCampagin(customerListDTO.getCustomerListId(), campaignId);
for (int i = 0; i < customerListDTO.getTotalCusAddRemove(); i++) {
CampaignCustomer campaignCustomerEntity = new CampaignCustomer();
campaignCustomerEntity.setCampaignId(campaignId);
campaignCustomerEntity.setCustomerId(listCustomerToAdd.get(i).getCustomerId());
campaignCustomerEntity.setStatus((short) 0);
campaignCustomerEntity.setRecallCount(0L);
campaignCustomerEntity.setCustomerListId(customerListDTO.getCustomerListId());
campaignCustomerEntity.setCompanySiteId(companySiteId);
campaignCustomerEntity.setInCampaignStatus((short) 1);
campaignCustomerRepository.save(campaignCustomerEntity);
}
} else if (customerListDTO.getTotalCusAddRemove() < 0){ // Loai bo khach hang
long custToDel = Math.abs(customerListDTO.getTotalCusAddRemove());
// Lay ra danh sach khach hang can loai bo
List<CampaignCustomer> listCustomerToDelete = campaignCustomerRepository.findListCustomerToDel(companySiteId, campaignId, customerListDTO.getCustomerListId());
for (int j = 0; j < custToDel; j++) {
campaignCustomerRepository.delete(listCustomerToDelete.get(j));
}
}
}
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;
}
// hungtt // hungtt
private Map<String, String> setMapData(Map<String, String> mapColumn, Locale locale) { private Map<String, String> setMapData(Map<String, String> mapColumn, Locale locale) {
mapColumn.put("CUSTOMER_ID", BundleUtils.getLangString("CUSTOMER_ID", locale)); mapColumn.put("CUSTOMER_ID", BundleUtils.getLangString("CUSTOMER_ID", locale));
......
package com.viettel.campaign.utils;
public enum SearchOperation {
EQUALITY, NEGATION, GREATER_THAN, LESS_THAN, LIKE, STARTS_WITH, ENDS_WITH, CONTAINS;
public static final String[] SIMPLE_OPERATION_SET = { ":", "!", ">", "<", "~" };
public static final String OR_PREDICATE_FLAG = "'";
public static final String ZERO_OR_MORE_REGEX = "*";
public static final String OR_OPERATOR = "OR";
public static final String AND_OPERATOR = "AND";
public static final String LEFT_PARANTHESIS = "(";
public static final String RIGHT_PARANTHESIS = ")";
public static SearchOperation getSimpleOperation(final char input) {
switch (input) {
case ':':
return EQUALITY;
case '!':
return NEGATION;
case '>':
return GREATER_THAN;
case '<':
return LESS_THAN;
case '~':
return LIKE;
default:
return null;
}
}
}
package com.viettel.campaign.web.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class CampaignInformationDTO {
private Long campaignId;
private Long totalIndividual;
private Long totalNotInteractive;
private Long totalNotCall;
private Long campaignCustomer;
private Long customerListId;
}
...@@ -10,7 +10,7 @@ import java.util.Date; ...@@ -10,7 +10,7 @@ import java.util.Date;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
public class ContactCustResultDTO extends BaseDTO{ public class ContactCustResultDTO extends BaseDTO {
private Long contactCustResultId; private Long contactCustResultId;
private Long companySiteId; private Long companySiteId;
private Short callStatus; private Short callStatus;
......
package com.viettel.campaign.web.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class CustomizeFielObjectDTO {
private Long customerId;
private String name;
private String companyName;
private String customerImg;
private String status;
private Long siteId;
private Short gender;
private String currentAddress;
private String placeOfBirth;
private Date dateOfBirth;
private String mobileNumber;
private String email;
private String userName;
private Long customerType;
private Long customizeFieldObjectId;
private Long objectId;
private Long customizeFieldId;
private String valueText;
private Long valueNumber;
private Date valueDate;
private Long valueCheckbox;
private Date createBy;
private Date createDate;
private String updateBy;
private Date updateDate;
private Long fieldOptionValueId;
private String title;
private String functionCode;
}
...@@ -13,21 +13,13 @@ import java.io.Serializable; ...@@ -13,21 +13,13 @@ import java.io.Serializable;
@AllArgsConstructor @AllArgsConstructor
public class FieldsToShowDTO implements Serializable { public class FieldsToShowDTO implements Serializable {
// private Long campaignCusListColId; private Long id;
// private Long companySiteId;
// private Long campaignId;
private String columnName; private String columnName;
private String columnTitle; private String columnTitle;
// private Long orderIndex;
// private Long customizeFieldId;
// private String customizeFieldTitle;
private Boolean isFix; private Boolean isFix;
private Long customizeFieldId;
} }
package com.viettel.campaign.web.dto.request_dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class CampaignCustomerListColumnRequestDTO {
private String customizeFieldTitle;
private String valueText;
private Long valueNumber;
private Date valueDate;
private Short valueCheckbox;
private String type;
private String valueCombobox;
}
...@@ -2,6 +2,8 @@ package com.viettel.campaign.web.dto.request_dto; ...@@ -2,6 +2,8 @@ package com.viettel.campaign.web.dto.request_dto;
import com.viettel.campaign.web.dto.BaseDTO; import com.viettel.campaign.web.dto.BaseDTO;
import com.viettel.campaign.web.dto.CustomerCustomDTO; import com.viettel.campaign.web.dto.CustomerCustomDTO;
import com.viettel.campaign.web.dto.CustomerListDTO;
import com.viettel.campaign.web.dto.FieldsToShowDTO;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -51,5 +53,7 @@ public class CampaignRequestDTO extends BaseDTO { ...@@ -51,5 +53,7 @@ public class CampaignRequestDTO extends BaseDTO {
String createTimeTo; String createTimeTo;
String createTimeFr; String createTimeFr;
String lstCustomerListId; String lstCustomerListId;
List<FieldsToShowDTO> lstFiedCustomer;
List<CustomerListDTO> lstCustomerCampaign;
String customerListId;
} }
package com.viettel.campaign.web.dto.request_dto;
import com.viettel.campaign.web.dto.BaseDTO;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CustomizeRequestDTo extends BaseDTO {
String operatorLogic;
String filterCustomer;
String compare;
String valueCustomer;
String companySiteId;
String customerId;
}
...@@ -16,7 +16,7 @@ import java.util.Map; ...@@ -16,7 +16,7 @@ import java.util.Map;
@RestController @RestController
@RequestMapping("/ipcc/completeCode") @RequestMapping("/ipcc/completeCode")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
public class CampaignCfg { public class CampaignCfgController {
private static final Logger LOGGER = Logger.getLogger(CustomerController.class); private static final Logger LOGGER = Logger.getLogger(CustomerController.class);
@Autowired @Autowired
...@@ -127,4 +127,5 @@ public class CampaignCfg { ...@@ -127,4 +127,5 @@ public class CampaignCfg {
return new ResponseEntity(result, HttpStatus.OK); return new ResponseEntity(result, HttpStatus.OK);
} }
} }
package com.viettel.campaign.web.rest; package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ccms_full.CustomizeFields;
import com.viettel.campaign.model.ccms_full.TimeRangeDialMode; import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import com.viettel.campaign.model.ccms_full.TimeZoneDialMode; import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import com.viettel.campaign.service.CampaignExecuteService; import com.viettel.campaign.service.CampaignExecuteService;
...@@ -26,13 +25,10 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -26,13 +25,10 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.file.Files;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
@RestController @RestController
...@@ -63,10 +59,17 @@ public class CampaignController { ...@@ -63,10 +59,17 @@ public class CampaignController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@PostMapping("/getCall") @PostMapping("/getCustomer")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> getCall(@RequestBody CampaignCustomerDTO requestDto) { public ResponseEntity<ResultDTO> getCustomer(@RequestBody CampaignCustomerDTO requestDto) {
ResultDTO result = campaignExecuteService.getCall(requestDto); ResultDTO result = campaignExecuteService.getCustomer(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/getCustomerComplete")
@ResponseBody
public ResponseEntity<ResultDTO> getCustomerComplete(@RequestBody ReceiveCustLogDTO requestDto) {
ResultDTO result = campaignExecuteService.getCustomerComplete(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
...@@ -294,10 +297,47 @@ public class CampaignController { ...@@ -294,10 +297,47 @@ public class CampaignController {
ResultDTO resultDTO = campaignService.deleteCustomerListFromCampaign(campaignRequestDTO); ResultDTO resultDTO = campaignService.deleteCustomerListFromCampaign(campaignRequestDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK); return new ResponseEntity<>(resultDTO, HttpStatus.OK);
} }
@PostMapping("/saveFieldCustomer")
@ResponseBody
public ResponseEntity saveFieldCustomer(@RequestBody CampaignRequestDTO campaignRequestDTO) {
ResultDTO resultDTO = campaignService.saveFieldCustomer(campaignRequestDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@PostMapping("/getCampaignCustomerInformation")
@ResponseBody
public ResponseEntity getCampaignCustomerInformation(@RequestBody CampaignRequestDTO campaignRequestDTO) {
campaignRequestDTO.setCustomerListId(null);
ResultDTO resultDTO = campaignService.getCampaignCustomerInformation(campaignRequestDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@PostMapping("/getCustomerListInformation")
@ResponseBody
public ResponseEntity getCustomerListInformation(@RequestBody CampaignRequestDTO campaignRequestDTO) {
ResultDTO resultDTO = campaignService.getCustomerListInformation(campaignRequestDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@PostMapping("/saveCustomerCampaign")
@ResponseBody
public ResponseEntity saveCustomerCampaign(@RequestBody CampaignRequestDTO campaignRequestDTO) {
ResultDTO resultDTO = campaignService.saveCustomerCampaign(campaignRequestDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@RequestMapping(value = "/renewCampaign", method = RequestMethod.PUT) @RequestMapping(value = "/renewCampaign", method = RequestMethod.PUT)
public ResponseEntity<ResultDTO> renewCampaign(@RequestBody CampaignDTO campaignDTO) { public ResponseEntity<ResultDTO> renewCampaign(@RequestBody CampaignDTO campaignDTO) {
ResultDTO result = campaignService.renewCampaign(campaignDTO); ResultDTO result = campaignService.renewCampaign(campaignDTO);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@GetMapping("/getCustomerInfor")
@ResponseBody
public ResponseEntity getCustomerInfor(@RequestParam("companySiteId") Long companySiteId, @RequestParam("customerId") Long customerId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = campaignExecuteService.getCustomerInfor(companySiteId, customerId, campaignId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
} }
package com.viettel.campaign.web.rest; package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.model.ccms_full.CustomizeFieldObject; import com.viettel.campaign.model.ccms_full.CustomizeFieldObject;
import com.viettel.campaign.model.ccms_full.CustomizeFields; import com.viettel.campaign.model.ccms_full.CustomizeFields;
import com.viettel.campaign.service.CustomerService; import com.viettel.campaign.service.CustomerService;
...@@ -8,6 +9,7 @@ import com.viettel.campaign.utils.Constants; ...@@ -8,6 +9,7 @@ import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.RedisUtil; import com.viettel.campaign.utils.RedisUtil;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
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.CustomizeRequestDTo;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import com.viettel.econtact.filter.UserSession; import com.viettel.econtact.filter.UserSession;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
...@@ -16,6 +18,7 @@ import org.slf4j.LoggerFactory; ...@@ -16,6 +18,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -248,4 +251,22 @@ public class CustomerController { ...@@ -248,4 +251,22 @@ public class CustomerController {
} }
return null; return null;
} }
@GetMapping(path = "", produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<List<Customer>> query(@RequestParam(value = "search") String query) {
List<Customer> result = null;
try {
result= customerService.searchByQuery(query);
}catch (IllegalArgumentException iae){
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body(result);
}
return ResponseEntity.status(HttpStatus.OK)
.body(result);
}
@PostMapping("/getCustomizeFields")
@ResponseBody
public ResponseEntity<?> getListFieldsToShow(@RequestBody CustomizeRequestDTo customizeRequestDTo) {
ResultDTO resultDTO = customerService.searchCustomizeFields(customizeRequestDTo);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
} }
server: server:
port: 9999 port: 1111
spring: spring:
application: application:
name: campaign name: campaign
......
...@@ -103,6 +103,8 @@ customer.notLessThan = not less than ...@@ -103,6 +103,8 @@ customer.notLessThan = not less than
customer.importCustomer = IMPORT CUSTOMER customer.importCustomer = IMPORT CUSTOMER
customer.notice = Attention: A record is valid when Full Name is not null and one of three fields Main phone, secondary phone or email is not null customer.notice = Attention: A record is valid when Full Name is not null and one of three fields Main phone, secondary phone or email is not null
customer.fileNotSelected=Please select a file customer.fileNotSelected=Please select a file
customer.emailInvalid=Invalid email;
customer.emailExists=Email exists;
common.fileNotSelected=Please select a file common.fileNotSelected=Please select a file
common.fileInvalidFormat=File invalid common.fileInvalidFormat=File invalid
......
...@@ -105,6 +105,8 @@ customer.notLessThan = không được nhỏ hơn ...@@ -105,6 +105,8 @@ customer.notLessThan = không được nhỏ hơn
customer.importCustomer = IMPORT KHÁCH HÀNG customer.importCustomer = IMPORT KHÁCH HÀNG
customer.notice = Chú ý: 1 bản ghi được coi là hợp lệ bắt buộc phải có thông tin Họ và Tên và 1 trong 3 thông tin liên lạc (số điện thoại chính, số điện thoại phụ hoặc email) customer.notice = Chú ý: 1 bản ghi được coi là hợp lệ bắt buộc phải có thông tin Họ và Tên và 1 trong 3 thông tin liên lạc (số điện thoại chính, số điện thoại phụ hoặc email)
customer.fileNotSelected=Bạn chưa chọn file customer.fileNotSelected=Bạn chưa chọn file
customer.emailInvalid=Email không đúng định dạng;
customer.emailExists=Email đã tồn tại;
common.fileNotSelected=Bạn chưa chọn file common.fileNotSelected=Bạn chưa chọn file
common.fileInvalidFormat=File không hợp lệ common.fileInvalidFormat=File không hợp lệ
......
...@@ -60,6 +60,9 @@ where a.status <> 0 ...@@ -60,6 +60,9 @@ where a.status <> 0
), ),
data as ( data as (
select a.*, rownum row_ from data_temp a select a.*, rownum row_ from data_temp a
),
count_data as (
select count(*) totalRow from data_temp
) )
select * from data select campaignCode, campaignName, userName, phoneNumber, customerName, startCall, contactStatus, surveyStatus, status, recordStatus, callTime, totalRow from data, count_data
where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1)) where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))
with status_customer as (
select complete_value
from campaign_complete_code
where complete_value <> 4
and is_finish <> 1
and campaign_type = 1
and company_site_id = :p_company_site_id
),
count_customer as (
select campaign_id campaignId,
sum(case
when customer_list_id is null then 1
else 0
end) totalIndividual,
sum(case
when status = 0 then 1
else 0
end) totalNotInteractive,
sum(case
when status in (select * from status_customer) then 1
else 0
end) totalNotCall
from campaign_customer
where :p_cus_list_id is null or customer_list_id = :p_cus_list_id
group by campaign_id
)
select a.*, b.customer_number campaignCustomer
from count_customer a
left join campaign b on a.campaignId = b.campaign_id
where a.campaignId = :p_campaign_id
with column_name_temp as ( with column_name_temp as (
select column_name columnName, 1 isFix from user_tab_columns, dual select column_name columnName, null customizeFieldId, 1 isFix from user_tab_columns, dual
where table_name = 'CUSTOMER' where table_name = 'CUSTOMER'
) )
select * from column_name_temp where columnName not in (select column_name from campaign_customerlist_column where column_name is not null) select * from column_name_temp where columnName not in (select column_name from campaign_customerlist_column where column_name is not null)
union all union all
select title columnName, 0 isFix from customize_fields, dual select title columnName, customize_field_id customizeFieldId, 0 isFix from customize_fields, dual
where function_code = 'CUSTOMER' where function_code = 'CUSTOMER'
and site_id = :p_company_site_id and site_id = :p_company_site_id
and customize_field_id not in (select customize_field_id from campaign_customerlist_column where campaign_customerlist_column.campaign_id = :p_campaign_id) and customize_field_id not in (select customize_field_id from campaign_customerlist_column where campaign_customerlist_column.campaign_id = :p_campaign_id)
select to_char(column_name) columnName, 1 isFix from campaign_customerlist_column, dual where campaign_id = :p_campaign_id and column_name is not null with field_name as (
select a.campaign_cus_list_column_id id, to_char(a.column_name) columnName, a.order_index, a.customize_field_id customizeFieldId, 1 isFix
from campaign_customerlist_column a, dual
where a.campaign_id = :p_campaign_id
and a.company_site_id = :p_company_site_id
and column_name is not null
union all union all
select customize_field_title columnName, 0 isFix from campaign_customerlist_column where campaign_id = :p_campaign_id select a.campaign_cus_list_column_id id, a.customize_field_title columnName, a.order_index, a.customize_field_id customizeFieldId, 0 isFix
from campaign_customerlist_column a
where a.campaign_id = :p_campaign_id
and a.company_site_id = :p_company_site_id
)
select id, columnName, customizeFieldId, isFix from field_name where columnName is not null order by order_index
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