Commit 34ea2d6c authored by Tu Bach's avatar Tu Bach

Merge branch 'master' of https://git.myitsol.com/hanv/service-campaign

# Conflicts:
#	src/main/java/com/viettel/campaign/repository/impl/CampaignRepositoryImpl.java
#	src/main/java/com/viettel/campaign/service/CustomerService.java
#	src/main/java/com/viettel/campaign/web/dto/CampaignDTO.java
parents 74231db4 3dd1723b
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="ExternalSystem" externalSystem="Maven" />
<component name="FacetManager"> <component name="FacetManager">
<facet type="Spring" name="Spring"> <facet type="Spring" name="Spring">
<configuration /> <configuration />
...@@ -35,6 +34,7 @@ ...@@ -35,6 +34,7 @@
<SOURCES /> <SOURCES />
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="library" name="Maven: org.modelmapper:modelmapper:2.3.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.0.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.6.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.6.RELEASE" level="project" />
...@@ -208,5 +208,6 @@ ...@@ -208,5 +208,6 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.9.9" level="project" /> <orderEntry type="library" name="Maven: joda-time:joda-time:2.9.9" level="project" />
<orderEntry type="library" name="Maven: org.modelmapper:modelmapper:2.3.2" level="project" />
</component> </component>
</module> </module>
\ No newline at end of file
...@@ -183,6 +183,12 @@ ...@@ -183,6 +183,12 @@
<groupId>joda-time</groupId> <groupId>joda-time</groupId>
<artifactId>joda-time</artifactId> <artifactId>joda-time</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.2</version>
</dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>
......
package com.viettel.campaign.config;
import org.modelmapper.ModelMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author anhvd_itsol
*/
@Configuration
public class ModelMapperConfig {
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
}
...@@ -6,7 +6,6 @@ import lombok.Setter; ...@@ -6,7 +6,6 @@ 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.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Entity @Entity
...@@ -19,23 +18,23 @@ public class Campaign implements Serializable { ...@@ -19,23 +18,23 @@ public class Campaign implements Serializable {
@NotNull @NotNull
@Basic(optional = false) @Basic(optional = false)
@Column(name = "CAMPAIGN_ID") @Column(name = "CAMPAIGN_ID")
private BigDecimal campaignId; private Long campaignId;
@Column(name = "COMPANY_SITE_ID") @Column(name = "COMPANY_SITE_ID")
private BigDecimal companySiteId; private Long companySiteId;
@Column(name = "CAMPAIGN_CODE") @Column(name = "CAMPAIGN_CODE")
private String campaignCode; private String campaignCode;
@Column(name = "CAMPAIGN_NAME") @Column(name = "CAMPAIGN_NAME")
private String campaignName; private String campaignName;
@Column(name = "CHANEL") @Column(name = "CHANEL")
private BigDecimal chanel; private Long chanel;
@Column(name = "CONTENT") @Column(name = "CONTENT")
private String content; private String content;
@Column(name = "CUSTOMER_NUMBER") @Column(name = "CUSTOMER_NUMBER")
private BigDecimal customerNumber; private Long customerNumber;
@Column(name = "TARGET") @Column(name = "TARGET")
private String target; private String target;
@Column(name = "STATUS") @Column(name = "STATUS")
private BigDecimal status; private Long status;
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
@Column(name = "START_TIME") @Column(name = "START_TIME")
private Date startTime; private Date startTime;
...@@ -65,7 +64,7 @@ public class Campaign implements Serializable { ...@@ -65,7 +64,7 @@ public class Campaign implements Serializable {
@Column(name = "PROCESS_STATUS") @Column(name = "PROCESS_STATUS")
private Integer processStatus; private Integer processStatus;
@Column(name = "DIAL_MODE") @Column(name = "DIAL_MODE")
private BigDecimal dialMode; private Long dialMode;
@Column(name = "DEPT_CODE") @Column(name = "DEPT_CODE")
private String deptCode; private String deptCode;
@Column(name = "TIME_RANGE") @Column(name = "TIME_RANGE")
...@@ -73,29 +72,29 @@ public class Campaign implements Serializable { ...@@ -73,29 +72,29 @@ public class Campaign implements Serializable {
@Column(name = "DAY_OF_WEEK") @Column(name = "DAY_OF_WEEK")
private String dayOfWeek; private String dayOfWeek;
@Column(name = "CURRENT_TIME_MODE") @Column(name = "CURRENT_TIME_MODE")
private BigDecimal currentTimeModel; private Long currentTimeMode;
@Column(name = "WRAPUP_TIME_CONNECT") @Column(name = "WRAPUP_TIME_CONNECT")
private BigDecimal wrapupTimeConnect; private Long wrapupTimeConnect;
@Column(name = "WRAPUP_TIME_DISCONNECT") @Column(name = "WRAPUP_TIME_DISCONNECT")
private BigDecimal wrapupTimeDisconnect; private Long wrapupTimeDisconnect;
@Column(name = "PREVIEW_TIME") @Column(name = "PREVIEW_TIME")
private BigDecimal previewTime; private Long previewTime;
@Column(name = "RATE_DIAL") @Column(name = "RATE_DIAL")
private BigDecimal rateDial; private Long rateDial;
@Column(name = "RATE_MISS") @Column(name = "RATE_MISS")
private BigDecimal rateMiss; private Long rateMiss;
@Column(name = "AVG_TIME_PROCESS") @Column(name = "AVG_TIME_PROCESS")
private BigDecimal avgTimeProcess; private Long avgTimeProcess;
@Column(name = "IS_APPLY_CUST_LOCK") @Column(name = "IS_APPLY_CUST_LOCK")
private BigDecimal isApplyCustLock; private Long isApplyCustLock;
@Column(name = "TARGET_TYPE") @Column(name = "TARGET_TYPE")
private BigDecimal targetType; private Long targetType;
@Column(name = "IS_TARGET") @Column(name = "IS_TARGET")
private BigDecimal isTarget; private Long isTarget;
@Column(name = "CAMPAIGN_IVR_CALLED_ID") @Column(name = "CAMPAIGN_IVR_CALLED_ID")
private BigDecimal campaignIvrCalledId; private Long campaignIvrCalledId;
@Column(name = "CONCURRENT_CALL") @Column(name = "CONCURRENT_CALL")
private BigDecimal concurrentCall; private Long concurrentCall;
@Column(name = "CALL_OUT_TIME_IN_DAY") @Column(name = "CALL_OUT_TIME_IN_DAY")
private String callOutTimeInDay; private String callOutTimeInDay;
@Column(name = "MUSIC_LIST") @Column(name = "MUSIC_LIST")
...@@ -111,6 +110,6 @@ public class Campaign implements Serializable { ...@@ -111,6 +110,6 @@ public class Campaign implements Serializable {
@Column(name = "TIME_WAIT_AGENT") @Column(name = "TIME_WAIT_AGENT")
private Integer timeWaitAgent; private Integer timeWaitAgent;
@Column(name = "QUEST_INDEX") @Column(name = "QUEST_INDEX")
private BigDecimal questIndex; private Long questIndex;
} }
...@@ -4,9 +4,7 @@ import lombok.Getter; ...@@ -4,9 +4,7 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Entity @Entity
...@@ -56,6 +54,6 @@ public class CampaignCompleteCode implements Serializable { ...@@ -56,6 +54,6 @@ public class CampaignCompleteCode implements Serializable {
@Column(name = "DURATION_LOCK") @Column(name = "DURATION_LOCK")
private Long durationLock; private Long durationLock;
@Column(name = "CHANEL") @Column(name = "CHANEL")
private BigDecimal chanel; private Long chanel;
} }
package com.viettel.campaign.model;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author anhvd_itsol
*/
@Entity
@Table(name = "TIME_RANGE_DIAL_MODE")
@Getter
@Setter
public class TimeRangeDialMode implements Serializable {
@Id
@NotNull
@Basic(optional = false)
@Column(name = "TIME_RANGE_DIAL_MODE_ID")
private Long timeRangeDialModeId;
@Column(name = "COMPANY_SITE_ID")
private Long companySiteId;
@Temporal(TemporalType.DATE)
@Column(name = "START_TIME")
private Date startTime;
@Column(name = "CAMPAIGN_ID")
private Long campaignId;
@Column(name = "DIAL_MODE")
private Short dialMode;
@Column(name = "USER_ID")
private Long userId;
}
package com.viettel.campaign.model;
import javax.persistence.Entity;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @author anhvd_itsol
*/
@Entity
@Table(name = "TIME_ZONE_DIAL_MODE")
@Getter
@Setter
public class TimeZoneDialMode implements Serializable{
@Id
@NotNull
@Basic(optional = false)
@Column(name = "TIME_ZONE_DIAL_MODE_ID")
private Long timeRangeDialModeId;
@Column(name = "COMPANY_SITE_ID")
private Long companySiteId;
@Column(name = "HOUR")
private String hour;
@Column(name = "MINUTE")
private String minute;
@Column(name = "CAMPAIGN_ID")
private Long campaignId;
@Column(name = "DIAL_MODE")
private Short dialMode;
@Column(name = "USER_ID")
private Long userId;
}
package com.viettel.campaign.repository;
import com.viettel.campaign.web.dto.ResultDTO;
public interface CampaignCompleteCodeRepositoryCustom {
ResultDTO updateStatusById(Long id);
}
...@@ -6,9 +6,27 @@ import org.springframework.data.jpa.repository.Modifying; ...@@ -6,9 +6,27 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import java.util.List;
public interface CustomerListMappingRepository extends JpaRepository<CustomerListMapping, Long> { public interface CustomerListMappingRepository extends JpaRepository<CustomerListMapping, Long> {
// ----------- customer ------------ //
@Modifying
@Query("delete from CustomerListMapping c where c.customerId=:p_customer_id and c.customerListId=:p_customer_list_id")
int deleteMappingByCustomerId(@Param("p_customer_id") Long p_customer_id, @Param("p_customer_list_id") Long p_customer_list_id);
@Modifying
@Query("delete from CustomerListMapping c where c.customerId in (:p_id) and c.customerListId =:p_customer_list_id")
int deleteMappingByCustomerIds(@Param("p_id") List<Long> p_id, @Param("p_customer_list_id") Long p_customer_list_id);
// ----------- customer list --------------- //
@Modifying
@Query("delete from CustomerListMapping c where c.customerListId=:p_customerListId")
int deleteMappingByCustomerListId(@Param("p_customerListId") Long p_customerListId);
@Modifying @Modifying
@Query("delete from CustomerListMapping c where c.customerListId=:customerListId") @Query("delete from CustomerListMapping c where c.customerListId in (:p_ids)")
int deleteMappingByCustomerListId(@Param("customerListId") Long customerListId); int deleteMappingByCustomerListIds(@Param("p_ids") List<Long> p_ids);
} }
...@@ -15,6 +15,10 @@ public interface CustomerListRepository extends JpaRepository<CustomerList, Long ...@@ -15,6 +15,10 @@ public interface CustomerListRepository extends JpaRepository<CustomerList, Long
CustomerList findByCustomerListCode(String customerListCode); CustomerList findByCustomerListCode(String customerListCode);
@Modifying @Modifying
@Query("delete from CustomerList c where c.customerListId in (:ids)") @Query("update CustomerList c set c.status = 0 where c.customerListId=:p_customerListId")
int deleteCustomerListIds(@Param("ids") List<Long> ids); int deleteCustomerList(@Param("p_customerListId") Long p_customerListId);
@Modifying
@Query("update CustomerList c set c.status = 0 where c.customerListId in (:p_ids)")
int deleteCustomerListIds(@Param("p_ids") List<Long> p_ids);
} }
package com.viettel.campaign.repository;
import com.viettel.campaign.model.TimeRangeDialMode;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author anhvd_itsol
*/
@Repository
public interface TimeRangeDialModeRepository extends JpaRepository<TimeRangeDialMode, Long> {
}
package com.viettel.campaign.repository;
import com.viettel.campaign.model.TimeZoneDialMode;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author anhvd_itsol
*/
@Repository
public interface TimeZoneDialModeRepository extends JpaRepository<TimeZoneDialMode, Long> {
}
...@@ -2,17 +2,14 @@ package com.viettel.campaign.repository.impl; ...@@ -2,17 +2,14 @@ package com.viettel.campaign.repository.impl;
import com.viettel.campaign.model.CampaignCompleteCode; import com.viettel.campaign.model.CampaignCompleteCode;
import com.viettel.campaign.repository.CampaignCompleteCodeRepository; import com.viettel.campaign.repository.CampaignCompleteCodeRepository;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.HibernateUtil; import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO; import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import org.hibernate.Query;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers; import org.hibernate.transform.Transformers;
import org.hibernate.type.BigDecimalType;
import org.hibernate.type.LongType; import org.hibernate.type.LongType;
import org.hibernate.type.ShortType; import org.hibernate.type.ShortType;
import org.hibernate.type.StringType; import org.hibernate.type.StringType;
...@@ -23,11 +20,9 @@ import org.springframework.data.domain.Example; ...@@ -23,11 +20,9 @@ import org.springframework.data.domain.Example;
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.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
...@@ -73,7 +68,7 @@ public class CampaignCompleteCodeRepositoryIpml implements CampaignCompleteCodeR ...@@ -73,7 +68,7 @@ public class CampaignCompleteCodeRepositoryIpml implements CampaignCompleteCodeR
query.addScalar("chanel", new ShortType()); query.addScalar("chanel", new ShortType());
query.addScalar("description", new StringType()); query.addScalar("description", new StringType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("chanel", new BigDecimalType()); query.addScalar("chanel", new LongType());
query.setResultTransformer(Transformers.aliasToBean(CampaignCompleteCodeDTO.class)); query.setResultTransformer(Transformers.aliasToBean(CampaignCompleteCodeDTO.class));
......
package com.viettel.campaign.repository.impl;
import com.viettel.campaign.model.CampaignCompleteCode;
import com.viettel.campaign.repository.CampaignCompleteCodeRepositoryCustom;
import com.viettel.campaign.web.dto.ResultDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import java.util.List;
@Repository
public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompleteCodeRepositoryCustom {
@Autowired
EntityManager entityManager;
private Logger log = LoggerFactory.getLogger(CampaignCompleteCompleteCodeRepositoryIpml.class);
@Override
@Transactional
public ResultDTO updateStatusById(Long id) {
ResultDTO dto = new ResultDTO();
try {
CampaignCompleteCode e = entityManager.find(CampaignCompleteCode.class, id);
e.setStatus(new Short("0")); // set status = 0 --> khong hoat dong
entityManager.merge(e);
dto.setErrorCode("00");
} catch (Exception e) {
log.error(e.getMessage(), e);
dto.setErrorCode("01");
dto.setDescription(e.getMessage());
}
return dto;
}
}
...@@ -21,7 +21,6 @@ import org.springframework.stereotype.Repository; ...@@ -21,7 +21,6 @@ import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.Query; import javax.persistence.Query;
import javax.xml.crypto.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
...@@ -274,7 +273,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -274,7 +273,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
query.setParameter("p_cusNumTo", requestDto.getNumOfCusTo() == 0 ? null : requestDto.getNumOfCusTo()); query.setParameter("p_cusNumTo", requestDto.getNumOfCusTo() == 0 ? null : requestDto.getNumOfCusTo());
} }
query.addScalar("campaignId", new BigDecimalType()); query.addScalar("campaignId", new LongType());
query.addScalar("campaignCode", new StringType()); query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType()); query.addScalar("campaignName", new StringType());
query.addScalar("campaignType", new StringType()); query.addScalar("campaignType", new StringType());
...@@ -282,7 +281,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -282,7 +281,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
query.addScalar("chanel", new ShortType()); query.addScalar("chanel", new ShortType());
query.addScalar("startTime", new DateType()); query.addScalar("startTime", new DateType());
query.addScalar("endTime", new DateType()); query.addScalar("endTime", new DateType());
query.addScalar("customerNumber", new BigDecimalType()); query.addScalar("customerNumber", new LongType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("numOfJoinedCus", new LongType()); query.addScalar("numOfJoinedCus", new LongType());
query.addScalar("numOfNotJoinedCus", new LongType()); query.addScalar("numOfNotJoinedCus", new LongType());
...@@ -352,7 +351,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -352,7 +351,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
.replaceAll("_", "\\\\_") .replaceAll("_", "\\\\_")
+ "%"); + "%");
} }
query.addScalar("campaignId", new BigDecimalType()); query.addScalar("campaignId", new LongType());
query.addScalar("campaignCode", new StringType()); query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType()); query.addScalar("campaignName", new StringType());
query.addScalar("startTime", new DateType()); query.addScalar("startTime", new DateType());
......
...@@ -41,7 +41,7 @@ public class TicketRepositoryImpl implements TicketRepositoryCustom { ...@@ -41,7 +41,7 @@ public class TicketRepositoryImpl implements TicketRepositoryCustom {
for (Object[] obj : data) { for (Object[] obj : data) {
TicketDTO item = new TicketDTO(); TicketDTO item = new TicketDTO();
item.setTicketId(((BigDecimal) obj[0]).longValueExact()); item.setTicketId(((Long)obj[0]));
item.setCreateDate((Date) obj[1]); item.setCreateDate((Date) obj[1]);
item.setSubject((String) obj[2]); item.setSubject((String) obj[2]);
item.setStatusName((String) obj[3]); item.setStatusName((String) obj[3]);
......
package com.viettel.campaign.service; package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.CampaignCustomerDTO; import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
...@@ -8,7 +8,12 @@ import java.util.Map; ...@@ -8,7 +8,12 @@ import java.util.Map;
public interface CampaignService { public interface CampaignService {
ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto); ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto);
ResultDTO search(CampaignRequestDTO requestDto); ResultDTO search(CampaignRequestDTO requestDto);
ResultDTO findByCampaignCode(CampaignRequestDTO requestDTO); ResultDTO findByCampaignCode(CampaignRequestDTO requestDTO);
ResultDTO addNewCampaign(CampaignDTO campaignDTO);
Map countRecallCustomer(Long companySiteId, Long agentId); Map countRecallCustomer(Long companySiteId, Long agentId);
} }
...@@ -3,6 +3,8 @@ package com.viettel.campaign.service; ...@@ -3,6 +3,8 @@ package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.CustomerDTO; import com.viettel.campaign.web.dto.CustomerDTO;
import com.viettel.campaign.web.dto.CustomerListDTO; import com.viettel.campaign.web.dto.CustomerListDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignCustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.DeleteCustomerRequestDTO;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -18,9 +20,9 @@ public interface CustomerService { ...@@ -18,9 +20,9 @@ public interface CustomerService {
ResultDTO createCustomer(CustomerDTO customerDTO); ResultDTO createCustomer(CustomerDTO customerDTO);
ResultDTO deleteCustomer(CustomerDTO customerDTO); ResultDTO deleteCustomer(DeleteCustomerRequestDTO deleteCustomerRequestDTO);
ResultDTO deleteIds(List<Long> ids); ResultDTO deleteIds(DeleteCustomerRequestDTO deleteCustomerRequestDTO);
// ------------ customer list ------------ // // ------------ customer list ------------ //
...@@ -34,9 +36,9 @@ public interface CustomerService { ...@@ -34,9 +36,9 @@ public interface CustomerService {
ResultDTO deleteCustomerListIds(List<Long> ids); ResultDTO deleteCustomerListIds(List<Long> ids);
ResultDTO searchCustomerList(String customerListCode, String customerListName, Date dateFrom, Date dateTo, int page, int pageSize, String sort); ResultDTO searchCustomerList(CampaignCustomerRequestDTO campaignCustomerRequestDTO);
// ------------ customer list ------------ // // ------------ customer contact ------------ //
ResultDTO getCustomerContact(Long customerId, Short contactType, String contact); ResultDTO getCustomerContact(Long customerId, Short contactType, String contact);
} }
package com.viettel.campaign.service; package com.viettel.campaign.service.impl;
import com.viettel.campaign.service.CampaignCompleteCodeService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO; import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
......
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.model.TimeZoneDialMode;
import com.viettel.campaign.repository.CampaignRepository; import com.viettel.campaign.repository.CampaignRepository;
import com.viettel.campaign.repository.TimeZoneDialModeRepository;
import com.viettel.campaign.repository.impl.CampaignRepositoryImpl;
import com.viettel.campaign.service.CampaignService; import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.modelmapper.ModelMapper;
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.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Service @Service
@Transactional(rollbackFor = Exception.class)
public class CampaignServiceImpl implements CampaignService { public class CampaignServiceImpl implements CampaignService {
private static final Logger logger = LogManager.getLogger(CampaignRepositoryImpl.class);
@Autowired @Autowired
CampaignRepository campaignRepository; CampaignRepository campaignRepository;
@Autowired
TimeZoneDialModeRepository timeZoneDialModeRepository;
@Autowired
ModelMapper modelMapper;
@Override @Override
public ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto) { public ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto) {
return campaignRepository.searchCampaignExecute(requestDto); return campaignRepository.searchCampaignExecute(requestDto);
...@@ -33,6 +51,34 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -33,6 +51,34 @@ public class CampaignServiceImpl implements CampaignService {
} }
@Override @Override
public ResultDTO addNewCampaign(CampaignDTO campaignDTO) {
ResultDTO resultDTO = new ResultDTO();
Campaign campaign = modelMapper.map(campaignDTO, Campaign.class);
TimeZoneDialMode timeZoneDialMode = new TimeZoneDialMode();
try {
campaign = campaignRepository.save(campaign);
//insert sub tables
if(campaignDTO.getCurrentTimeMode().equals(1)){
timeZoneDialMode.setCompanySiteId(campaignDTO.getCompanySiteId());
timeZoneDialMode.setCampaignId(campaign.getCampaignId());
// timeZoneDialMode.setHour(campaignDTO.getT);
timeZoneDialModeRepository.save(timeZoneDialMode);
}
if(campaignDTO.getCurrentTimeMode().equals(2)) {
}
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setErrorCode(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(campaign);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setErrorCode(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
public Map countRecallCustomer(Long companySiteId, Long agentId) { public Map countRecallCustomer(Long companySiteId, Long agentId) {
Map result = new HashMap(); Map result = new HashMap();
Long count = campaignRepository.countRecallCustomer(companySiteId, agentId); Long count = campaignRepository.countRecallCustomer(companySiteId, agentId);
......
...@@ -14,10 +14,16 @@ import com.viettel.campaign.web.dto.ResultDTO; ...@@ -14,10 +14,16 @@ import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.mapper.CustomerMapper; import com.viettel.campaign.mapper.CustomerMapper;
import com.viettel.campaign.model.Customer; import com.viettel.campaign.model.Customer;
import com.viettel.campaign.utils.DataUtil; import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.web.dto.request_dto.CampaignCustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.DeleteCustomerRequestDTO;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers; 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.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*; import org.springframework.data.domain.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -130,12 +136,13 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -130,12 +136,13 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
public ResultDTO deleteCustomer(CustomerDTO customerDTO) { public ResultDTO deleteCustomer(DeleteCustomerRequestDTO deleteCustomerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
if (customerDTO != null) { if (deleteCustomerRequestDTO != null) {
// delete // delete
customerRepository.deleteById(customerDTO.getCustomerId()); // customerRepository.deleteById(customerDTO.getCustomerId());
customerListMappingRepository.deleteMappingByCustomerId(deleteCustomerRequestDTO.getCustomerId(), deleteCustomerRequestDTO.getCustomerListId());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
...@@ -152,11 +159,12 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -152,11 +159,12 @@ public class CustomerServiceImpl implements CustomerService {
@Transactional @Transactional
@Override @Override
public ResultDTO deleteIds(List<Long> ids) { public ResultDTO deleteIds(DeleteCustomerRequestDTO deleteCustomerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
if (ids != null) { if (deleteCustomerRequestDTO != null) {
customerRepository.deleteIds(ids); // customerRepository.deleteIds(ids);
customerListMappingRepository.deleteMappingByCustomerIds(deleteCustomerRequestDTO.getCustomerIds(), deleteCustomerRequestDTO.getCustomerListId());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else { } else {
...@@ -239,7 +247,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -239,7 +247,7 @@ public class CustomerServiceImpl implements CustomerService {
if (customerListDTO != null) { if (customerListDTO != null) {
// update // update
customerList = customerListMapper.toPersistenceBean(customerListDTO); customerList = customerListMapper.toPersistenceBean(customerListDTO);
customerList = customerListRepository.save(customerList); customerListRepository.save(customerList);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
...@@ -258,14 +266,12 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -258,14 +266,12 @@ public class CustomerServiceImpl implements CustomerService {
@Override @Override
public ResultDTO deleteCustomerList(CustomerListDTO customerListDTO) { public ResultDTO deleteCustomerList(CustomerListDTO customerListDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CustomerListMapper customerListMapper = new CustomerListMapper();
CustomerList customerList = customerListRepository.findCustomerListByCustomerListId(customerListDTO.getCustomerListId());
try { try {
// delete // delete
if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignCount(customerListDTO.getCustomerListId()))) { if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignCount(customerListDTO.getCustomerListId()))) {
customerList = customerListMapper.toPersistenceBean(customerListDTO);
customerList = customerListRepository.save(customerList); customerListRepository.deleteCustomerList(customerListDTO.getCustomerListId());
customerListMappingRepository.deleteMappingByCustomerListId(customerListDTO.getCustomerListId()); customerListMappingRepository.deleteMappingByCustomerListId(customerListDTO.getCustomerListId());
...@@ -291,6 +297,9 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -291,6 +297,9 @@ public class CustomerServiceImpl implements CustomerService {
if (ids != null) { if (ids != null) {
if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignIdsCount(ids))) { if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignIdsCount(ids))) {
customerListRepository.deleteCustomerListIds(ids); customerListRepository.deleteCustomerListIds(ids);
customerListMappingRepository.deleteMappingByCustomerListIds(ids);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else { } else {
...@@ -308,70 +317,87 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -308,70 +317,87 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
public ResultDTO searchCustomerList(String customerListCode, String customerListName, Date dateFrom, Date dateTo, int page, int pageSize, String sort) { public ResultDTO searchCustomerList(CampaignCustomerRequestDTO campaignCustomerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
session.beginTransaction(); session.beginTransaction();
if (DataUtil.isNullOrEmpty(campaignCustomerRequestDTO.getCompanySiteId())) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
StringBuilder sqlStrBuilder = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
if (!customerListCode.equals("undefined")) { if (DataUtil.isNullOrEmpty(campaignCustomerRequestDTO.getCustomerListCode())) {
sqlStrBuilder.append(" AND CUSTOMER_LIST_CODE LIKE :p_list_code"); sqlStrBuilder.append(" AND CUSTOMER_LIST_CODE LIKE :p_list_code");
} }
if (!customerListName.equals("undefined")) { if (DataUtil.isNullOrEmpty(campaignCustomerRequestDTO.getCustomerListName())) {
sqlStrBuilder.append(" AND CUSTOMER_LIST_NAME LIKE :p_list_name"); sqlStrBuilder.append(" AND CUSTOMER_LIST_NAME LIKE :p_list_name");
} }
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_date_from", dateFrom); query.setParameter("p_date_from", campaignCustomerRequestDTO.getConvertedDateFrom());
query.setParameter("p_date_to", dateTo); query.setParameter("p_date_to", campaignCustomerRequestDTO.getConvertedDateTo());
if (!customerListCode.equals("undefined")) { if (!campaignCustomerRequestDTO.getCustomerListCode().equals("undefined")) {
query.setParameter("p_list_code", "%" + query.setParameter("p_list_code", "%" +
customerListCode campaignCustomerRequestDTO.getCustomerListCode()
.replace("\\", "\\\\") .replace("\\", "\\\\")
.replaceAll("%", "\\\\%") .replaceAll("%", "\\\\%")
.replaceAll("_", "\\\\_") .replaceAll("_", "\\\\_")
+ "%"); + "%");
} }
if (!customerListName.equals("undefined")) { if (!campaignCustomerRequestDTO.getCustomerListName().equals("undefined")) {
query.setParameter("p_list_name", "%" + query.setParameter("p_list_name", "%" +
customerListName campaignCustomerRequestDTO.getCustomerListName()
.replace("\\", "\\\\") .replace("\\", "\\\\")
.replaceAll("%", "\\\\%") .replaceAll("%", "\\\\%")
.replaceAll("_", "\\\\_") .replaceAll("_", "\\\\_")
+ "%"); + "%");
} }
// Pageable pageable = PageRequest.of(page, pageSize, Sort.by(sort)); query.addScalar("customerListId", new LongType());
// Page<CustomerList> pc = customerListRepository.search(); query.addScalar("companySiteId", new LongType());
// query.addScalar("customerListCode", new StringType());
// result.put("totalItem", pc.getTotalElements()); query.addScalar("customerListName", new StringType());
// result.put("searchList", pc.iterator()); query.addScalar("status", new ShortType());
query.addScalar("createBy", new StringType());
query.addScalar("createAt", new DateType());
query.addScalar("updateBy", new StringType());
query.addScalar("updateAt", new DateType());
query.addScalar("source", new StringType());
query.addScalar("deptCreate", new StringType());
query.setResultTransformer(Transformers.aliasToBean(CustomerListDTO.class)); query.setResultTransformer(Transformers.aliasToBean(CustomerListDTO.class));
int count = 0; int count = 0;
List<CustomerListDTO> dtoList = query.list(); List<CustomerListDTO> dtoList = query.list();
if (dtoList.size() > 0) { if (dtoList.size() > 0) {
count = query.list().size(); count = query.list().size();
} }
// Pageable pageable = buildPageable(); Pageable pageable = SQLBuilder.buildPageable(campaignCustomerRequestDTO);
// if (pageable != null) { if (pageable != null) {
// query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize()); query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
// query.setMaxResults(pageable.getPageSize()); query.setMaxResults(pageable.getPageSize());
// } }
Pageable pageable = PageRequest.of(page, pageSize, Sort.by(sort));
List<CustomerListDTO> data = query.list(); List<CustomerListDTO> data = query.list();
Page<CustomerListDTO> dataPage = new PageImpl<>(data, pageable, count); Page<CustomerListDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage); resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally {
session.close(); session.close();
}
return resultDTO; return resultDTO;
} }
......
...@@ -17,7 +17,6 @@ import org.springframework.data.domain.Sort; ...@@ -17,7 +17,6 @@ import org.springframework.data.domain.Sort;
public class SQLBuilder { public class SQLBuilder {
public static final String SQL_MODULE_CAMPAIGN_MNG = "campaign-mng"; public static final String SQL_MODULE_CAMPAIGN_MNG = "campaign-mng";
public static final String SQL_MODULE_CAMPAIGN_STATUS_MNG = "campaign-status-mng"; public static final String SQL_MODULE_CAMPAIGN_STATUS_MNG = "campaign-status-mng";
public static final String SQL_MODULE_CAMPAIGN_CUSTOMER = "campaign-customer";
public static String getSqlQueryById(String module, public static String getSqlQueryById(String module,
String queryId) { String queryId) {
......
...@@ -3,7 +3,6 @@ package com.viettel.campaign.web.dto; ...@@ -3,7 +3,6 @@ package com.viettel.campaign.web.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Getter @Getter
...@@ -27,5 +26,5 @@ public class CampaignCompleteCodeDTO extends BaseDTO { ...@@ -27,5 +26,5 @@ public class CampaignCompleteCodeDTO extends BaseDTO {
private Long companySiteId; private Long companySiteId;
private Short isLock; private Short isLock;
private Long durationLock; private Long durationLock;
private BigDecimal chanel; private Long chanel;
} }
...@@ -3,20 +3,19 @@ package com.viettel.campaign.web.dto; ...@@ -3,20 +3,19 @@ package com.viettel.campaign.web.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Getter @Getter
@Setter @Setter
public class CampaignDTO extends BaseDTO { public class CampaignDTO extends BaseDTO {
private BigDecimal campaignId; private Long campaignId;
private BigDecimal companySiteId; private Long companySiteId;
private String campaignCode; private String campaignCode;
private String campaignName; private String campaignName;
private Short chanel; private Short chanel;
private String content; private String content;
private BigDecimal customerNumber; private Long customerNumber;
private String target; private String target;
private Short status; private Short status;
private Date startTime; private Date startTime;
...@@ -31,29 +30,29 @@ public class CampaignDTO extends BaseDTO { ...@@ -31,29 +30,29 @@ public class CampaignDTO extends BaseDTO {
private String campaignType; private String campaignType;
private String product; private String product;
private Integer processStatus; private Integer processStatus;
private BigDecimal dialMode; private Long dialMode;
private String deptCode; private String deptCode;
private String timeRange; private String timeRange;
private String dayOfWeek; private String dayOfWeek;
private BigDecimal currentTimeModel; private Long currentTimeMode;
private BigDecimal wrapupTimeConnect; private Long wrapupTimeConnect;
private BigDecimal wrapupTimeDisconnect; private Long wrapupTimeDisconnect;
private BigDecimal previewTime; private Long previewTime;
private BigDecimal rateDial; private Long rateDial;
private BigDecimal rateMiss; private Long rateMiss;
private BigDecimal avgTimeProcess; private Long avgTimeProcess;
private BigDecimal isApplyCustLock; private Long isApplyCustLock;
private BigDecimal targetType; private Long targetType;
private BigDecimal isTarget; private Long isTarget;
private BigDecimal campaignIvrCalledId; private Long campaignIvrCalledId;
private BigDecimal concurrentCall; private Long concurrentCall;
private String callOutTimeInDay; private String callOutTimeInDay;
private String musicList; private String musicList;
private Integer timePlayMusic; private Integer timePlayMusic;
private Date campaignStart; private Date campaignStart;
private Date campaignEnd; private Date campaignEnd;
private Integer timeWaitAgent; private Integer timeWaitAgent;
private BigDecimal questIndex; private Long questIndex;
private Long numOfJoinedCus; private Long numOfJoinedCus;
private Long numOfNotJoinedCus; private Long numOfNotJoinedCus;
private Long numOfLockCus; private Long numOfLockCus;
......
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public class TimeRangeDialModeDTO {
private Long timeRangeDialModeId;
private Long companySiteId;
private Date startTime;
private Long campaignId;
private Short dialMode;
private Long userId;
}
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public class TimeZoneDialModeDTO {
private Long timeRangeDialModeId;
private Long companySiteId;
private String hour;
private String minute;
private Long campaignId;
private Short dialMode;
private Long userId;
}
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 CampaignCustomerRequestDTO extends BaseDTO {
String customerListCode;
String customerListName;
String convertedDateFrom;
String convertedDateTo;
String companySiteId;
}
package com.viettel.campaign.web.dto.request_dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class DeleteCustomerRequestDTO {
Long customerId;
Long customerListId;
List<Long> customerIds;
}
...@@ -84,8 +84,8 @@ public class CampaignCompleteCodeController { ...@@ -84,8 +84,8 @@ public class CampaignCompleteCodeController {
ResultDTO resultDTO = completeCodeService.deleteList(completeCodeDtos); ResultDTO resultDTO = completeCodeService.deleteList(completeCodeDtos);
return new ResponseEntity<>(resultDTO, HttpStatus.OK); return new ResponseEntity<>(resultDTO, HttpStatus.OK);
} }
@CrossOrigin(origins = "*")
@PostMapping("/deleteById/{id}") @PostMapping("/deleteById")
@ResponseBody @ResponseBody
public ResultDTO deleteById(@RequestParam("id") Long id){ public ResultDTO deleteById(@RequestParam("id") Long id){
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
......
...@@ -39,6 +39,11 @@ public class CampaignController { ...@@ -39,6 +39,11 @@ public class CampaignController {
return campaignService.findByCampaignCode(dto); return campaignService.findByCampaignCode(dto);
} }
@RequestMapping(method = RequestMethod.POST)
public ResultDTO addNewCampaign(@RequestBody CampaignRequestDTO dto) {
return campaignService.findByCampaignCode(dto);
}
@GetMapping("/countRecallCustomer") @GetMapping("/countRecallCustomer")
@ResponseBody @ResponseBody
public ResponseEntity countRecallCustomer(@RequestParam("companySiteId") Long companySiteId, @RequestParam("agentId") Long agentId) { public ResponseEntity countRecallCustomer(@RequestParam("companySiteId") Long companySiteId, @RequestParam("agentId") Long agentId) {
......
...@@ -4,6 +4,8 @@ import com.viettel.campaign.web.dto.CustomerDTO; ...@@ -4,6 +4,8 @@ import com.viettel.campaign.web.dto.CustomerDTO;
import com.viettel.campaign.web.dto.CustomerListDTO; import com.viettel.campaign.web.dto.CustomerListDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.service.CustomerService; import com.viettel.campaign.service.CustomerService;
import com.viettel.campaign.web.dto.request_dto.CampaignCustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.DeleteCustomerRequestDTO;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
...@@ -12,7 +14,6 @@ import org.springframework.stereotype.Controller; ...@@ -12,7 +14,6 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -68,17 +69,17 @@ public class CustomerController { ...@@ -68,17 +69,17 @@ public class CustomerController {
@PostMapping("/delete") @PostMapping("/delete")
@ResponseBody @ResponseBody
public ResultDTO deleteCustomer(@RequestBody @Valid CustomerDTO customerDTO) { public ResultDTO deleteCustomer(@RequestBody @Valid DeleteCustomerRequestDTO deleteCustomerRequestDTO) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
result = customerService.deleteCustomer(customerDTO); result = customerService.deleteCustomer(deleteCustomerRequestDTO);
return result; return result;
} }
@PostMapping("/deleteIds") @PostMapping("/deleteIds")
@ResponseBody @ResponseBody
public ResultDTO deleteIds(@RequestBody @Valid List<Long> ids) { public ResultDTO deleteIds(@RequestBody @Valid DeleteCustomerRequestDTO deleteCustomerRequestDTO) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
result = customerService.deleteIds(ids); result = customerService.deleteIds(deleteCustomerRequestDTO);
return result; return result;
} }
...@@ -147,10 +148,9 @@ public class CustomerController { ...@@ -147,10 +148,9 @@ public class CustomerController {
return result; return result;
} }
@GetMapping("/searchCustomerList") @RequestMapping(value = "/searchCustomerList", method = RequestMethod.POST)
@ResponseBody public ResponseEntity searchCustomerList(@RequestBody CampaignCustomerRequestDTO campaignCustomerRequestDTO) {
public ResponseEntity searchCustomerList(@RequestParam("customerListCode") String customerListCode, @RequestParam("customerListName") String customerListName, @RequestParam("dateFrom") Date dateFrom, @RequestParam("dateTo") Date dateTo, @RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort) { ResultDTO result = customerService.searchCustomerList(campaignCustomerRequestDTO);
ResultDTO result = customerService.searchCustomerList(customerListCode, customerListName, dateFrom, dateTo, page, pageSize, sort);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
......
SELECT SELECT
CUSTOMER_LIST_ID, CUSTOMER_LIST_ID customerListId,
COMPANY_SITE_ID, COMPANY_SITE_ID companySiteId,
CUSTOMER_LIST_CODE, CUSTOMER_LIST_CODE customerListCode,
CUSTOMER_LIST_NAME, CUSTOMER_LIST_NAME customerListName,
STATUS, STATUS status,
CREATE_BY, CREATE_BY createBy,
CREATE_AT, CREATE_AT createAt,
UPDATE_BY, UPDATE_BY updateBy,
UPDATE_AT, UPDATE_AT updateAt,
SOURCE, SOURCE source,
DEPT_CREATE DEPT_CREATE deptCreate
FROM CUSTOMER_LIST FROM CUSTOMER_LIST
WHERE 1 = 1 WHERE 1 = 1
AND CREATE_AT BETWEEN :p_date_from AND :p_date_to AND CREATE_AT BETWEEN :p_date_from AND :p_date_to
...@@ -11,6 +11,7 @@ SELECT ...@@ -11,6 +11,7 @@ SELECT
FROM CAMPAIGN_COMPLETE_CODE a FROM CAMPAIGN_COMPLETE_CODE a
LEFT JOIN CAMPAIGN b ON a.CAMPAIGN_ID = b.CAMPAIGN_ID LEFT JOIN CAMPAIGN b ON a.CAMPAIGN_ID = b.CAMPAIGN_ID
LEFT JOIN AP_PARAM c ON a.CAMPAIGN_TYPE = to_char(c.AP_PARAM_ID) LEFT JOIN AP_PARAM c ON a.CAMPAIGN_TYPE = to_char(c.AP_PARAM_ID);
SELECT max(COMPLETE_VALUE) ,COMPANY_SITE_ID from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = : p_site_id GROUP BY COMPANY_SITE_ID
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment