Commit a9620037 authored by Nguyen Ha's avatar Nguyen Ha

Merge remote-tracking branch 'origin/master'

parents 738ddd38 69e574aa
package com.viettel.campaign.config; package com.viettel.campaign.config;
//import com.viettel.campaign.job.CampaignJob;
import com.viettel.campaign.job.CampaignJob; import com.viettel.campaign.job.CampaignJob;
import com.viettel.campaign.service.ApParamService; import com.viettel.campaign.service.ApParamService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -25,19 +26,19 @@ import java.util.concurrent.ScheduledFuture; ...@@ -25,19 +26,19 @@ import java.util.concurrent.ScheduledFuture;
* @project campaign * @project campaign
*/ */
@Slf4j //@Slf4j
@EnableScheduling //@EnableScheduling
@Configuration //@Configuration
public class JobConfig implements SchedulingConfigurer { //public class JobConfig implements SchedulingConfigurer {
//
TaskScheduler taskScheduler; // TaskScheduler taskScheduler;
private ScheduledFuture<?> job1; // private ScheduledFuture<?> job1;
private ScheduledFuture<?> job2; // private ScheduledFuture<?> job2;
//
@Bean // @Bean
public CampaignJob campaignJob(){ // public CampaignJob campaignJob(){
return new CampaignJob(); // return new CampaignJob();
} // }
// @Override // @Override
// public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { // public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
...@@ -52,47 +53,47 @@ public class JobConfig implements SchedulingConfigurer { ...@@ -52,47 +53,47 @@ public class JobConfig implements SchedulingConfigurer {
// taskRegistrar.setTaskScheduler(threadPoolTaskScheduler); // taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
// } // }
private void job1(TaskScheduler scheduler) { // private void job1(TaskScheduler scheduler) {
job1 = scheduler.schedule(() -> { // job1 = scheduler.schedule(() -> {
log.info("processing job1 ..."); // log.info("processing job1 ...");
log.info(Thread.currentThread().getName() + " The Task1 executed at " + new Date()); // log.info(Thread.currentThread().getName() + " The Task1 executed at " + new Date());
try { // try {
Thread.sleep(10000); // Thread.sleep(10000);
} catch (InterruptedException e) { // } catch (InterruptedException e) {
// TODO Auto-generated catch block // // TODO Auto-generated catch block
e.printStackTrace(); // e.printStackTrace();
} // }
}, triggerContext -> { // }, triggerContext -> {
//
String cronExp = "0/5 * * * * ?";// Can be pulled from a db . // String cronExp = "0/5 * * * * ?";// Can be pulled from a db .
return new CronTrigger(cronExp).nextExecutionTime(triggerContext); // return new CronTrigger(cronExp).nextExecutionTime(triggerContext);
}); // });
} // }
//
private void job2(TaskScheduler scheduler) { // private void job2(TaskScheduler scheduler) {
job2 = scheduler.schedule(() -> { // job2 = scheduler.schedule(() -> {
log.info(Thread.currentThread().getName() + " The Job executed at " + new Date()); // log.info(Thread.currentThread().getName() + " The Job executed at " + new Date());
campaignJob().process(); // campaignJob().process();
//
}, triggerContext -> { // }, triggerContext -> {
String cronExp = "0/1 * * * * ?";// Can be pulled from a db . This will run every minute // String cronExp = "0/1 * * * * ?";// Can be pulled from a db . This will run every minute
return new CronTrigger(cronExp).nextExecutionTime(triggerContext); // return new CronTrigger(cronExp).nextExecutionTime(triggerContext);
}); // });
} // }
//
//
//
@Override // @Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { // public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); // ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(10); // threadPoolTaskScheduler.setPoolSize(10);
threadPoolTaskScheduler.setThreadNamePrefix("scheduler-thread"); // threadPoolTaskScheduler.setThreadNamePrefix("scheduler-thread");
threadPoolTaskScheduler.initialize(); // threadPoolTaskScheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler); // scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
// scheduledTaskRegistrar.addTriggerTask(() -> campaignJob().process(), (TriggerContext triggerContext) -> yourService.getCron()); //// scheduledTaskRegistrar.addTriggerTask(() -> campaignJob().process(), (TriggerContext triggerContext) -> yourService.getCron());
scheduledTaskRegistrar.addTriggerTask(() -> campaignJob().process(), triggerContext -> { // scheduledTaskRegistrar.addTriggerTask(() -> campaignJob().process(), triggerContext -> {
CronTrigger trigger = new CronTrigger("0/5 * * * * ?"); // CronTrigger trigger = new CronTrigger("0/5 * * * * ?");
return trigger.nextExecutionTime(triggerContext); // return trigger.nextExecutionTime(triggerContext);
}); // });
} // }
} //}
package com.viettel.campaign.mapper;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
public class CampaignAgentsMapper extends BaseMapper<CampaignAgent, CampaignAgentsDTO> {
@Override
public CampaignAgentsDTO toDtoBean(CampaignAgent campaignAgent) {
CampaignAgentsDTO obj = new CampaignAgentsDTO();
obj.setAgentId(campaignAgent.getAgentId());
obj.setCampaignAgentId(campaignAgent.getCampaignAgentId());
obj.setCampaignId(campaignAgent.getCampaignId());
obj.setCompanySiteId(campaignAgent.getCompanySiteId());
obj.setFilterType(campaignAgent.getFilterType());
obj.setReSchedule(campaignAgent.getReSchedule());
obj.setStatus(campaignAgent.getStatus());
return obj;
}
@Override
public CampaignAgent toPersistenceBean(CampaignAgentsDTO dtoBean) {
CampaignAgent obj = new CampaignAgent();
obj.setAgentId(dtoBean.getAgentId());
obj.setCampaignAgentId(dtoBean.getCampaignAgentId());
obj.setCampaignId(dtoBean.getCampaignId());
obj.setCompanySiteId(dtoBean.getCompanySiteId());
obj.setFilterType(dtoBean.getFilterType());
obj.setReSchedule(dtoBean.getReSchedule());
obj.setStatus(dtoBean.getStatus());
return obj;
}
}
package com.viettel.campaign.model.acd_full;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name = "AGENTS")
@Getter
@Setter
public class Agents {
@Id
@Basic(optional = false)
@Column(name = "AGENT_ID")
private String agentId;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "SYSTEM_STATUS")
private String systemStatus;
@Column(name = "USER_STATUS")
private String userStatus;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_START_WORK")
private Date lastStartWork;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_FINISH_WORK")
private Date lastFinishWork;
@Column(name = "LOGIN_TYPE")
private String loginType;
@Column(name = "VSA_USER_LOGIN")
private String vsaUserLogin;
@Column(name = "CALL_STATUS")
private String callStatus;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_CHANGE_STATUS")
private Date lastChangeStatus;
@Column(name = "IP_LOGIN")
private String ipLogin;
@Column(name = "NUM_REJECTCALL")
private String numRejectcall;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LOGIN_TIME")
private Date loginTime;
@Column(name = "GROUP_NAME")
private String groupName;
@Column(name = "TOTAL_ANSWER_CALL")
private String totalAnswerCall;
@Column(name = "TOTAL_ANSWER_TIME")
private String totalAnswerTime;
@Column(name = "CALLOUT_ID")
private Integer calloutId;
@Column(name = "LAST_QUEUE_ANSWER")
private String lastQueueAnswer;
@Column(name = "EMAIL_USER_STATUS")
private String emailUserAnswer;
@Column(name = "CHAT_USER_STATUS")
private String chatUserStatus;
@Column(name = "SMS_USER_STATUS")
private String smsUserStatus;
@Column(name = "MULTI_CHANNEL_USER_STATUS")
private String multiChannelUserStatus;
@Column(name = "MAX_TRANSACTION_EMAIL")
private Integer maxTransactionEmail = 1;
@Column(name = "MAX_TRANSACTION_CHAT")
private Integer maxTransactionChat = 1;
@Column(name = "MAX_CURRENT_TRANSACTION")
private Integer maxCurrentTransaction = 6;
@Column(name = "TOTAL_TRANSACTION")
private Integer totalTransaction = 0;
@Column(name = "EMAIL_SYSTEM_STATUS")
private Integer emailSystemStatus = 0;
@Column(name = "CHAT_SYSTEM_STATUS")
private Integer chatSystemStatus = 0;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_CHANGE_CHAT_STATUS")
private Date lastChangeChatStatus;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_CHANGE_EMAIL_STATUS")
private Date lastChangeEmailStatus;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_CHANGE_MULTI_STATUS")
private Date lastChangeMultiStatus;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_START_WORK_CHAT")
private Date lastStartWorkChat;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_START_WORK_EMAIL")
private Date lastStartWorkEmail;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_FINISH_WORK_CHAT")
private Date lastFinishWorkChat;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_FINISH_WORK_EMAIL")
private Date lastFinishWorkEmail;
@Column(name = "TOTAL_ANSWER_CHAT")
private Long totalAnswerChat;
@Column(name = "TOTAL_ANSWER_EMAIL")
private Long totalAnswerEmail;
@Column(name = "TOTAL_ANSWER_TIME_EMAIL")
private Long totalAnswerTimeEmail;
@Column(name = "TOTAL_ANSWER_TIME_CHAT")
private Long totalAnswerTimeChat;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_ASSIGN_TIME_SMS")
private Date lastAssignTimeSms;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_CHANGE_SMS_STATUS")
private Date lastChangeSmsStatus;
@Column(name = "MAX_TRANSACTION_SMS")
private Integer maxTransactionSms = 1;
@Column(name = "SMS_SYSTEM_STATUS")
private Integer smsSystemStatus = 0;
@Column(name = "FACEBOOK_SYSTEM_STATUS")
private Integer facebookSystemStatus = 0;
@Column(name = "FACEBOOK_USER_STATUS")
private String facebookUserStatus;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_START_WORK_SMS")
private Date lastStartWorkSms;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_START_WORK_FACEBOOK")
private Date lastStartWorkFacebook;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_FINISH_WORK_SMS")
private Date lastFinishWorkSms;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_FINISH_WORK_FACEBOOK")
private Date lastFinishWorkFacebook;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_CHANGE_FACEBOOK_STATUS")
private Date lastChangeFacebookStatus;
@Column(name = "MAX_TRANSACTION_FACEBOOK")
private Integer maxTransactionFacebook = 1;
@Column(name = "TICKET_USER_STATUS")
private String ticketUserStatus;
@Column(name = "TICKET_SYSTEM_STATUS")
private Integer ticketSystemStatus;
@Column(name = "MAX_TRANSACTION_TICKET")
private Integer maxTransactionTicket;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_START_WORK_TICKET")
private Date lastStartWorkTicket;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_FINISH_WORK_TICKET")
private Date lastFinishWorkTicket;
@Column(name = "COMPANY_SITE_ID")
private Long companySiteId;
@Column(name = "SITE_ID")
private Long siteId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_CHANGE_TICKET_STATUS")
private Date lastChangeTicketStatus;
@Column(name = "AGENT_TYPE")
private Short agentType;
@Column(name = "STATUS")
private Long status = 1L;
@Column(name = "CREATE_BY")
private String createBy;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATE_DATE")
private Date createDate;
@Column(name = "UPDATE_BY")
private String updateBy;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "UPDATE_DATE")
private Date updateDate;
@Column(name = "USER_KAZOO_ID")
private String userKazooId;
@Column(name = "CAMPAIGN_SYSTEM_STATUS")
private String campaignSystemStatus;
@Column(name = "CURRENT_CAMPAIGN_ID")
private Long currentCampaignId;
}
...@@ -3,10 +3,7 @@ package com.viettel.campaign.model.ccms_full; ...@@ -3,10 +3,7 @@ package com.viettel.campaign.model.ccms_full;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.persistence.Column; import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable; import java.io.Serializable;
@Entity @Entity
...@@ -16,6 +13,8 @@ import java.io.Serializable; ...@@ -16,6 +13,8 @@ import java.io.Serializable;
public class CampaignAgent implements Serializable { public class CampaignAgent implements Serializable {
@Id @Id
@GeneratedValue(generator = "CAMPAIGN_AGENT_SEQ")
@SequenceGenerator(name = "CAMPAIGN_AGENT_SEQ", sequenceName = "CAMPAIGN_AGENT_SEQ", allocationSize = 1)
@Column(name = "CAMPAIGN_AGENT_ID") @Column(name = "CAMPAIGN_AGENT_ID")
private Long campaignAgentId; private Long campaignAgentId;
@Column(name = "CAMPAIGN_ID") @Column(name = "CAMPAIGN_ID")
......
...@@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull; ...@@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull;
@Setter @Setter
public class CampaignCustomerList { public class CampaignCustomerList {
@Id @Id
@GeneratedValue(generator = "campaign_customerlist_seq") @GeneratedValue(generator = "campaign_customer_seq")
@SequenceGenerator(name = "campaign_customerlist_seq", sequenceName = "campaign_customerlist_seq", allocationSize = 1) @SequenceGenerator(name = "campaign_customer_seq", sequenceName = "campaign_customer_seq", allocationSize = 1)
@Basic(optional = false) @Basic(optional = false)
@NotNull @NotNull
@Column(name = "CAMPAIGN_CUSTOMERLIST_ID") @Column(name = "CAMPAIGN_CUSTOMERLIST_ID")
......
package com.viettel.campaign.model.ccms_full;
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 = "SCENARIO")
@Getter
@Setter
public class Scenario implements Serializable {
@Id
@NotNull
@GeneratedValue(generator = "SCENARIO_SEQ")
@SequenceGenerator(name = "SCENARIO_SEQ", sequenceName = "SCENARIO_SEQ", allocationSize = 1)
@Basic(optional = false)
@Column(name = "SCENARIO_ID")
private Long scenarioId;
@Column(name = "COMPANY_SITE_ID")
private Long companySiteId;
@Column(name = "CAMPAIGN_ID")
private Long campaignId;
@Column(name = "CODE")
private String code;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "CREATE_BY")
private String createBy;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATE_TIME")
private Date createTime;
@Column(name = "UPDATE_BY")
private Long updateBy;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "UPDATE_TIME")
private Date updateTime;
}
package com.viettel.campaign.model.ccms_full;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @author anhvd_itsol
*/
@Entity
@Table(name = "SCENARIO_ANSWER")
@Getter
@Setter
public class ScenarioAnswer {
@Id
@NotNull
@GeneratedValue(generator = "SCENARIO_ANSWER_SEQ")
@SequenceGenerator(name = "SCENARIO_ANSWER_SEQ", sequenceName = "SCENARIO_ANSWER_SEQ", allocationSize = 1)
@Basic(optional = false)
@Column(name = "SCENARIO_ANSWER_ID")
private Long scenarioAnswerId;
@Column(name = "COMPANY_SITE_ID")
private Long companySiteId;
@Column(name = "SCENARIO_QUESTION_ID")
private Long scenarioQuestionId;
@Column(name = "CODE")
private String code;
@Column(name = "ANSWER")
private String answer;
@Column(name = "ORDER_INDEX")
private Integer orderIndex;
@Column(name = "HAS_INPUT")
private Short hasInput;
@Column(name = "STATUS")
private Short status;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATE_TIME")
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DELETE_TIME")
private Date deleteTime;
@Column(name = "MAPPING_QUESTION_ID")
private Long mappingQuestionId;
}
package com.viettel.campaign.model.ccms_full;
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 = "SCENARIO_QUESTION")
@Getter
@Setter
public class ScenarioQuestion implements Serializable {
@Id
@NotNull
@GeneratedValue(generator = "SCENARIO_QES_SEQ")
@SequenceGenerator(name = "SCENARIO_QES_SEQ", sequenceName = "SCENARIO_QES_SEQ", allocationSize = 1)
@Basic(optional = false)
@Column(name = "SCENARIO_QUESTION_ID")
private Long scenarioQuestionId;
@Column(name = "COMPANY_SITE_ID")
private Long companySiteId;
@Column(name = "CAMPAIGN_ID")
private Long campaignId;
@Column(name = "SCENARIO_ID")
private Long scenarioId;
@Column(name = "CODE")
private String code;
@Column(name = "TYPE")
private Short type;
@Column(name = "QUESTION")
private String question;
@Column(name = "ORDER_INDEX")
private Long orderIndex;
@Column(name = "STATUS")
private Short status;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATE_TIME")
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "DELETE_TIME")
private Date deleteTime;
@Column(name = "IS_REQUIRE")
private Short isRequire;
@Column(name = "IS_DEFAULT")
private Short isDefault;
@Column(name = "ANSWER_INDEX")
private Short answerIndex;
}
...@@ -27,7 +27,7 @@ public class TimeRangeDialMode implements Serializable { ...@@ -27,7 +27,7 @@ public class TimeRangeDialMode implements Serializable {
@Column(name = "COMPANY_SITE_ID") @Column(name = "COMPANY_SITE_ID")
private Long companySiteId; private Long companySiteId;
@Temporal(TemporalType.DATE) @Temporal(TemporalType.TIMESTAMP)
@Column(name = "START_TIME") @Column(name = "START_TIME")
private Date startTime; private Date startTime;
......
package com.viettel.campaign.model.ccms_full;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Entity
@Table(name = "VSA_USERS")
@Getter
@Setter
public class VSAUsers {
@Id
@NotNull
@GeneratedValue(generator = "vsa_users_renew")
@SequenceGenerator(name = "vsa_users_renew", sequenceName = "vsa_users_renew", allocationSize = 1)
@Basic(optional = false)
@Column(name = "USER_ID")
private Long userId;
@Column(name = "USER_NAME")
private String userName;
@Column(name = "STATUS")
private Short status;
@Column(name = "FULL_NAME")
private String fullName;
@Column(name = "USER_TYPE_ID")
private Long userTypeId;
@Column(name = "CREATE_DATE")
private Date createDate;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "STAFF_CODE")
private String staffCode;
@Column(name = "MANAGER_ID")
private Long managerId;
@Column(name = "LOCATION_ID")
private Long locationId;
@Column(name = "DEPT_ID")
private Long deptId;
@Column(name = "DEPT_LEVEL")
private String deptLevel;
@Column(name = "POS_ID")
private Long posId;
@Column(name = "DEPT_NAME")
private String deptName;
@Column(name = "GROUP_ID")
private Long groupId;
@Column(name = "SITE_ID")
private Long siteId;
@Column(name = "COMPANY_SITE_ID")
private Long companySiteId;
@Column(name = "AGENT_TYPE")
private Short agentType;
@Column(name = "MOBILE_NUMBER")
private String mobileNumber;
@Column(name = "FACEBOOK_ID")
private String facebookId;
@Column(name = "LOGIN_TYPE")
private Short loginType;
@Column(name = "GOOGLE_ID")
private String googleId;
@Column(name = "EMAIL")
private String email;
@Column(name = "AVAILABLE_TICKET")
private Long availableTicket;
@Column(name = "USER_KAZOO_ID")
private String userKazooId;
}
package com.viettel.campaign.repository.acd_full;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.acd_full.Agents;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
public interface AgentsRepository extends JpaRepository<Agents, String> {
@Transactional(DataSourceQualify.ACD_FULL)
Agents findByAgentId(String agentId);
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
@Transactional(DataSourceQualify.CCMS_FULL)
public interface CampaignAgentRepository extends JpaRepository<CampaignAgent, Long> {
@Query(value = "SELECT campaign_agent_seq.nextval FROM DUAL", nativeQuery = true)
Long getNextSeqId();
@Modifying
@Query("UPDATE CampaignAgent SET status = :status WHERE agentId = :agentId AND campaignId = :campaignId")
void updateCampaignAgentSetStatus(@Param("agentId") Long agentId, @Param("campaignId") Long campaignId, @Param("status") Integer status);
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CampaignAgentsRepository extends JpaRepository<CampaignAgent, Long> {
}
...@@ -17,7 +17,6 @@ public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCo ...@@ -17,7 +17,6 @@ public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCo
@Query(" select u FROM CampaignCompleteCode u WHERE u.status = 1") @Query(" select u FROM CampaignCompleteCode u WHERE u.status = 1")
Page<CampaignCompleteCode> findAll(Pageable pageable); Page<CampaignCompleteCode> findAll(Pageable pageable);
// Page<CampaignCompleteCode> findAllByStatus(String status, Pageable pageable);
@Query("FROM CampaignCompleteCode WHERE completeName LIKE concat('%', :name, '%') ") @Query("FROM CampaignCompleteCode WHERE completeName LIKE concat('%', :name, '%') ")
List<CampaignCompleteCode> findByName(@Param("name") String name, Pageable pageable); List<CampaignCompleteCode> findByName(@Param("name") String name, Pageable pageable);
...@@ -25,24 +24,24 @@ public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCo ...@@ -25,24 +24,24 @@ public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCo
List<CampaignCompleteCode> findByCompleteNameContains(String name, Pageable pageable); List<CampaignCompleteCode> findByCompleteNameContains(String name, Pageable pageable);
@Modifying @Modifying
@Query("update CampaignCompleteCode c set c.status = 0 where c.campaignCompleteCodeId in (:ids)") @Query("update CampaignCompleteCode c set c.status = 0 where c.campaignCompleteCodeId in (:p_ids) and c.companySiteId=:p_company_site_id" )
int deleteds(@Param("ids") List<Long> ids); int deletedList(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id);
// @Query(value="SELECT max(completeValue) FROM CampaignCompleteCode WHERE companySiteId = :companySiteId GROUP BY companySiteId")
// Short findByMaxCompanySiteId(Long companySiteId);
List<CampaignCompleteCode> findCampaignCompleteCodesByCompanySiteId(Long companySiteId); List<CampaignCompleteCode> findCampaignCompleteCodesByCompanySiteId(Long companySiteId);
@Query(value="SELECT max(completeValue) FROM CampaignCompleteCode WHERE companySiteId = :companySiteId GROUP BY companySiteId") @Query(value="SELECT max(completeValue) FROM CampaignCompleteCode WHERE companySiteId = :companySiteId GROUP BY companySiteId")
Short findByMaxCompanySiteId(Long companySiteId); Short findByMaxCompanySiteId(Long companySiteId);
@Modifying
// List<CampaignCompleteCode> findCampaignCompleteCodesByCompanySiteId(Long companySiteId); @Query("update CampaignCompleteCode c set c.status = 0 where c.campaignCompleteCodeId=:p_campaignCompleteCode_list_id and c.companySiteId=:p_company_site_id")
int deleteCampaignCompleteCodeBy(@Param("p_campaignCompleteCode_list_id") Long p_campaignCompleteCode_list_id, @Param("p_company_site_id") Long p_company_site_id);
// List<CampaignCompleteCode> findByCampaignIdContainsAndChanel(Long campaignId, String chanel);
@Query(value = "FROM CampaignCompleteCode WHERE status = 1 AND completeValue = :completeValue AND completeType = :completeType AND companySiteId = :companySiteId") @Query(value = "FROM CampaignCompleteCode WHERE status = 1 AND completeValue = :completeValue AND completeType = :completeType AND companySiteId = :companySiteId")
List<CampaignCompleteCode> getCustomerStatus(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId); List<CampaignCompleteCode> getCustomerStatus(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId);
@Query(value = "FROM CampaignCompleteCode WHERE status = 1 AND completeValue <> :completeValue AND completeType = :completeType AND companySiteId = :companySiteId") @Query(value = "FROM CampaignCompleteCode WHERE status = 1 AND completeValue <> :completeValue AND completeType = :completeType AND companySiteId = :companySiteId")
List<CampaignCompleteCode> getCustomerStatusWithoutValue(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId); List<CampaignCompleteCode> getCustomerStatusWithoutValue(@Param("completeValue") String completeValue, @Param("completeType") Short completeType, @Param("companySiteId") Long companySiteId);
@Query("select c from CampaignCompleteCode c where c.companySiteId =:p_company_site_id")
List<CampaignCompleteCode> findAllCampaignCompleteCode();
} }
package com.viettel.campaign.repository.ccms_full; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO; import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -11,6 +13,8 @@ import java.util.List; ...@@ -11,6 +13,8 @@ import java.util.List;
@Repository @Repository
public interface CampaignExecuteRepository { public interface CampaignExecuteRepository {
List<CampaignDTO> searchCampaignExecute(CampaignRequestDTO campaignRequestDto, Pageable pageable);
//<editor-fold: hungtt> //<editor-fold: hungtt>
List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType); List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType);
...@@ -20,5 +24,7 @@ public interface CampaignExecuteRepository { ...@@ -20,5 +24,7 @@ public interface CampaignExecuteRepository {
ResultDTO getInteractiveResult(CampaignRequestDTO dto); ResultDTO getInteractiveResult(CampaignRequestDTO dto);
List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto); List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto);
List<ContactCustResultDTO> getContactCustById(CampaignRequestDTO dto);
//</editor-fold: hungtt> //</editor-fold: hungtt>
} }
package com.viettel.campaign.repository.ccms_full; package com.viettel.campaign.repository.ccms_full;
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.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface CampaignRepositoryCustom { public interface CampaignRepositoryCustom {
ResultDTO searchCampaignExecute(CampaignRequestDTO campaignRequestDto);
ResultDTO search(CampaignRequestDTO requestDto); ResultDTO search(CampaignRequestDTO requestDto);
...@@ -14,5 +16,5 @@ public interface CampaignRepositoryCustom { ...@@ -14,5 +16,5 @@ public interface CampaignRepositoryCustom {
String getMaxCampaignIndex(); String getMaxCampaignIndex();
ResultDTO checkAllowStatusToPrepare (Long campaignId); ResultDTO checkAllowStatusToPrepare(Long campaignId);
} }
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.ScenarioAnswer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author anhvd_itsol
*/
@Repository
public interface ScenarioAnswerRepository extends JpaRepository<ScenarioAnswer, Long> {
}
package com.viettel.campaign.repository.ccms_full;
/**
* @author anhvd_itsol
*/
public interface ScenarioAnswerRepositoryCustom {
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.ScenarioQuestion;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author anhvd_itsol
*/
@Repository
public interface ScenarioQuestionRepository extends JpaRepository<ScenarioQuestion, Long> {
List<ScenarioQuestion> findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatus(Long scenarioId, Long campaignId, Long companySiteId, Short status);
}
package com.viettel.campaign.repository.ccms_full;
/**
* @author anhvd_itsol
*/
public interface ScenarioQuestionRepositoryCustom {
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.Scenario;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author anhvd_itsol
*/
@Repository
public interface ScenarioRepository extends JpaRepository<Scenario, Long> {
Scenario findScenarioByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
}
package com.viettel.campaign.repository.ccms_full;
/**
* @author anhvd_itsol
*/
public interface ScenarioRepositoryCustom {
}
...@@ -2,6 +2,8 @@ package com.viettel.campaign.repository.ccms_full; ...@@ -2,6 +2,8 @@ package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.TimeRangeDialMode; import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -12,5 +14,10 @@ import java.util.List; ...@@ -12,5 +14,10 @@ import java.util.List;
@Repository @Repository
public interface TimeRangeDialModeRepository extends JpaRepository<TimeRangeDialMode, Long> { public interface TimeRangeDialModeRepository extends JpaRepository<TimeRangeDialMode, Long> {
List<TimeRangeDialMode> findTimeRangeDialModeByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId); List<TimeRangeDialMode> findTimeRangeDialModeByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
@Query(value = "SELECT * FROM TIME_RANGE_DIAL_MODE r " +
"WHERE r.CAMPAIGN_ID = :campaignId AND r.COMPANY_SITE_ID = :companySiteId AND TO_CHAR(r.START_TIME,'HH24:MI:SS') <= TO_CHAR(SYSDATE,'HH24:MI:SS')", nativeQuery = true)
TimeRangeDialMode findDialModeAtCurrent(@Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
} }
...@@ -2,6 +2,8 @@ package com.viettel.campaign.repository.ccms_full; ...@@ -2,6 +2,8 @@ package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.TimeZoneDialMode; import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -12,5 +14,10 @@ import java.util.List; ...@@ -12,5 +14,10 @@ import java.util.List;
@Repository @Repository
public interface TimeZoneDialModeRepository extends JpaRepository<TimeZoneDialMode, Long> { public interface TimeZoneDialModeRepository extends JpaRepository<TimeZoneDialMode, Long> {
List<TimeZoneDialMode> findTimeZoneDialModeByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId); List<TimeZoneDialMode> findTimeZoneDialModeByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
@Query(value = "SELECT * FROM TIME_ZONE_DIAL_MODE z " +
"WHERE z.CAMPAIGN_ID = :campaignId AND z.COMPANY_SITE_ID = :companySiteId AND concat(z.HOUR, ':', z.MINUTE) <= TO_CHAR(SYSDATE,'HH24:MI')", nativeQuery = true)
TimeZoneDialMode findDialModeAtCurrent(@Param("campaignId") Long campaignId, @Param("companySiteId") Long companySiteId);
} }
package com.viettel.campaign.repository.ccms_full; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.UserActionLogDTO; import com.viettel.campaign.web.dto.UserActionLogDTO;
import org.springframework.transaction.annotation.Transactional;
/** /**
* @author anhvd_itsol * @author anhvd_itsol
*/ */
public interface UserActionLogRepositoryCustom { public interface UserActionLogRepositoryCustom {
@Transactional(DataSourceQualify.CCMS_FULL)
ResultDTO insertToUserActionLog(UserActionLogDTO userActionLogDTO); ResultDTO insertToUserActionLog(UserActionLogDTO userActionLogDTO);
} }
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.VSAUsers;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface VSAUsersRepository extends JpaRepository<VSAUsers, Long> {
List<VSAUsers> findAllByCompanySiteId(Long companySiteId);
}
...@@ -2,11 +2,14 @@ package com.viettel.campaign.repository.ccms_full.impl; ...@@ -2,11 +2,14 @@ package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.ccms_full.CampaignExecuteRepository; import com.viettel.campaign.repository.ccms_full.CampaignExecuteRepository;
import com.viettel.campaign.repository.ccms_full.TimeRangeDialModeRepository;
import com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil; import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil; import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO; import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
...@@ -14,7 +17,10 @@ import org.hibernate.SQLQuery; ...@@ -14,7 +17,10 @@ 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.*; import org.hibernate.type.DateType;
import org.hibernate.type.LongType;
import org.hibernate.type.ShortType;
import org.hibernate.type.StringType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -25,35 +31,43 @@ import org.springframework.data.domain.Pageable; ...@@ -25,35 +31,43 @@ import org.springframework.data.domain.Pageable;
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@Repository @Repository
public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
private static final Logger logger = LoggerFactory.getLogger(CampaignRepositoryImpl.class); private static final Logger logger = LoggerFactory.getLogger(CampaignExecuteRepositoryImp.class);
@Autowired @Autowired
@Qualifier(DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL) @Qualifier(DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL)
NamedParameterJdbcTemplate namedParameterJdbcTemplate; NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired @Autowired
@PersistenceContext( unitName = DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL) @PersistenceContext(unitName = DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager; EntityManager entityManager;
@Autowired
TimeZoneDialModeRepository zoneDialModeRepository;
@Autowired
TimeRangeDialModeRepository rangeDialModeRepository;
@Override @Override
public List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType) { public List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType) {
List<ApParamDTO> list = new ArrayList<>(); List<ApParamDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-connect-status"); String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-status");
try { try {
params.put("p_company_site_id", companySiteId); params.put("p_company_site_id", companySiteId);
params.put("p_complete_type", completeType); params.put("p_complete_type", completeType);
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ApParamDTO.class)); list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
// list = namedParameterJdbcTemplate.getJdbcTemplate().query(sql, (PreparedStatementSetter) params, BeanPropertyRowMapper.newInstance(ComboBoxDTO.class));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} }
...@@ -87,43 +101,78 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -87,43 +101,78 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive"); String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
sqlBuilder.append(sql); sqlBuilder.append(sql);
sqlBuilder.append(" and b.campaign_type in (:p_list_compaign_type)");
sqlBuilder.append(" and to_char(a.customer_id) like :p_customer_id");
sqlBuilder.append(" and to_char(a.contact_status) in (:p_list_contact_status)");
sqlBuilder.append(" and to_char(a.call_status) in (:p_list_survey_status)");
sqlBuilder.append(" and to_char(a.status) in (:p_list_record_status)");
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
sqlBuilder.append(" and a.phone_number like :p_phone_number");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
sqlBuilder.append(" and b.campaign_code in (:p_list_campaign_id) ");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sqlBuilder.append(" and upper(campaignName) like upper(:p_campaign_name)"); sqlBuilder.append(" and upper(b.campaign_name) like :p_campaign_name");
} }
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) { if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sqlBuilder.append(" and upper(userName) like upper(:p_user_name)"); sqlBuilder.append(" and upper(c.user_name) like :p_user_name");
} }
SQLQuery query = session.createSQLQuery(sqlBuilder.toString()); SQLQuery query = session.createSQLQuery(sqlBuilder.toString());
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(",")); query.setParameter("p_company_site_id", dto.getCompanySiteId());
query.setParameter("p_customer_id", dto.getCustomerId()); query.setParameter("p_customer_id", "%" + dto.getCustomerId()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
query.setParameter("p_date_from", dto.getFromDate()); query.setParameter("p_date_from", dto.getFromDate());
query.setParameter("p_date_to", dto.getToDate()); query.setParameter("p_date_to", dto.getToDate());
query.setParameterList("p_list_compaign_type", dto.getCampaignType().split(","));
query.setParameterList("p_list_contact_status", dto.getContactStatus().split(",")); query.setParameterList("p_list_contact_status", dto.getContactStatus().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().split(",")); query.setParameterList("p_list_survey_status", dto.getSurveyStatus().split(","));
query.setParameterList("p_list_record_status", dto.getRecordStatus().split(",")); query.setParameterList("p_list_record_status", dto.getRecordStatus().split(","));
query.setParameter("p_phone_number", dto.getPhoneNumber());
query.setParameter("p_call_time_from", dto.getCallTimeFrom()); query.setParameter("p_call_time_from", dto.getCallTimeFrom());
query.setParameter("p_call_time_to", dto.getCallTimeTo()); query.setParameter("p_call_time_to", dto.getCallTimeTo());
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(","));
}
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
query.setParameter("p_phone_number", "%" + dto.getPhoneNumber()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
query.setParameter("p_campaign_name", dto.getCampaignName().trim()); query.setParameter("p_campaign_name", "%" + dto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
} }
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) { if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
query.setParameter("p_user_name", dto.getAgentId().trim()); query.setParameter("p_user_name", "%" + dto.getAgentId().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
} }
query.addScalar("campaignCode", new StringType()); query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType()); query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType()); query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new LongType()); query.addScalar("phoneNumber", new StringType());
query.addScalar("customerName", new StringType()); query.addScalar("customerName", new StringType());
query.addScalar("createTime", new DateType()); query.addScalar("createTime", new DateType());
query.addScalar("contactStatus", new StringType()); query.addScalar("contactStatus", new StringType());
query.addScalar("surveyStatus", new StringType()); query.addScalar("surveyStatus", new StringType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("recordStatus", new ShortType()); query.addScalar("recordStatus", new ShortType());
query.addScalar("callTime", new LongType());
query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class)); query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class));
...@@ -138,13 +187,13 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -138,13 +187,13 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
query.setMaxResults(pageable.getPageSize()); query.setMaxResults(pageable.getPageSize());
} }
List<ContactCustResultDTO> data = query.list(); List<ContactCustResultDTO> data = query.list();
for (ContactCustResultDTO contactCustResultDTO: data) { for (ContactCustResultDTO contactCustResultDTO : data) {
if (!"AGENT".equals(dto.getRoleUser())) { if (!"AGENT".equals(dto.getRoleUser())) {
contactCustResultDTO.setEnableEdit(true); contactCustResultDTO.setEnableEdit(true);
} else { } else {
if (contactCustResultDTO.getRecordStatus() == 2) { if (contactCustResultDTO.getRecordStatus() == 2) {
contactCustResultDTO.setEnableEdit(true); contactCustResultDTO.setEnableEdit(true);
} else if (contactCustResultDTO.getRecordStatus() == 1 && isLower24Hour(contactCustResultDTO.getCreateTime())){ } else if (contactCustResultDTO.getRecordStatus() == 1 && isLower24Hour(contactCustResultDTO.getCreateTime())) {
contactCustResultDTO.setEnableEdit(true); contactCustResultDTO.setEnableEdit(true);
} else { } else {
contactCustResultDTO.setEnableEdit(false); contactCustResultDTO.setEnableEdit(false);
...@@ -161,8 +210,8 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -161,8 +210,8 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
} finally { } finally {
session.close(); session.close();
return resultDTO;
} }
return resultDTO;
} }
@Override @Override
...@@ -177,43 +226,78 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -177,43 +226,78 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive"); String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
sqlBuilder.append(sql); sqlBuilder.append(sql);
sqlBuilder.append(" and b.campaign_type in (:p_list_compaign_type)");
sqlBuilder.append(" and to_char(a.customer_id) like :p_customer_id");
sqlBuilder.append(" and to_char(a.contact_status) in (:p_list_contact_status)");
sqlBuilder.append(" and to_char(a.call_status) in (:p_list_survey_status)");
sqlBuilder.append(" and to_char(a.status) in (:p_list_record_status)");
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
sqlBuilder.append(" and a.phone_number like :p_phone_number");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
sqlBuilder.append(" and b.campaign_code in (:p_list_campaign_id) ");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sqlBuilder.append(" and upper(campaignName) like upper(:p_campaign_name)"); sqlBuilder.append(" and upper(b.campaign_name) like :p_campaign_name");
} }
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) { if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sqlBuilder.append(" and upper(userName) like upper(:p_user_name)"); sqlBuilder.append(" and upper(c.user_name) like :p_user_name");
} }
SQLQuery query = session.createSQLQuery(sqlBuilder.toString()); SQLQuery query = session.createSQLQuery(sqlBuilder.toString());
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(",")); query.setParameter("p_company_site_id", dto.getCompanySiteId());
query.setParameter("p_customer_id", dto.getCustomerId()); query.setParameter("p_customer_id", "%" + dto.getCustomerId()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
query.setParameter("p_date_from", dto.getFromDate()); query.setParameter("p_date_from", dto.getFromDate());
query.setParameter("p_date_to", dto.getToDate()); query.setParameter("p_date_to", dto.getToDate());
query.setParameterList("p_list_compaign_type", dto.getCampaignType().split(","));
query.setParameterList("p_list_contact_status", dto.getContactStatus().split(",")); query.setParameterList("p_list_contact_status", dto.getContactStatus().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().split(",")); query.setParameterList("p_list_survey_status", dto.getSurveyStatus().split(","));
query.setParameterList("p_list_record_status", dto.getRecordStatus().split(",")); query.setParameterList("p_list_record_status", dto.getRecordStatus().split(","));
query.setParameter("p_phone_number", dto.getPhoneNumber());
query.setParameter("p_call_time_from", dto.getCallTimeFrom()); query.setParameter("p_call_time_from", dto.getCallTimeFrom());
query.setParameter("p_call_time_to", dto.getCallTimeTo()); query.setParameter("p_call_time_to", dto.getCallTimeTo());
if (!DataUtil.isNullOrEmpty(dto.getCampaignId())) {
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(","));
}
if (!DataUtil.isNullOrEmpty(dto.getPhoneNumber())) {
query.setParameter("p_phone_number", "%" + dto.getPhoneNumber()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
}
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) { if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
query.setParameter("p_campaign_name", dto.getCampaignName().trim()); query.setParameter("p_campaign_name", "%" + dto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
} }
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) { if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
query.setParameter("p_user_name", dto.getAgentId().trim()); query.setParameter("p_user_name", "%" + dto.getAgentId().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\%")
.replaceAll("_", "\\_")
+ "%");
} }
query.addScalar("campaignCode", new StringType()); query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType()); query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType()); query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new LongType()); query.addScalar("phoneNumber", new StringType());
query.addScalar("customerName", new StringType()); query.addScalar("customerName", new StringType());
query.addScalar("createTime", new DateType()); query.addScalar("createTime", new DateType());
query.addScalar("contactStatus", new StringType()); query.addScalar("contactStatus", new StringType());
query.addScalar("surveyStatus", new StringType()); query.addScalar("surveyStatus", new StringType());
query.addScalar("status", new ShortType()); query.addScalar("status", new ShortType());
query.addScalar("recordStatus", new ShortType()); query.addScalar("recordStatus", new ShortType());
query.addScalar("callTime", new LongType());
query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class)); query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class));
...@@ -226,6 +310,11 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -226,6 +310,11 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
} }
} }
@Override
public List<ContactCustResultDTO> getContactCustById(CampaignRequestDTO dto) {
return null;
}
private boolean isLower24Hour(Date createTime) { private boolean isLower24Hour(Date createTime) {
Date currTime = new Date(); Date currTime = new Date();
long diffMilSec = currTime.getTime() - createTime.getTime(); long diffMilSec = currTime.getTime() - createTime.getTime();
...@@ -234,5 +323,134 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository { ...@@ -234,5 +323,134 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
return true; return true;
} }
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<CampaignDTO> searchCampaignExecute(CampaignRequestDTO campaignRequestDto, Pageable pageable) {
List<CampaignDTO> result = new ArrayList<>();
StringBuilder expression = new StringBuilder()
.append(" SELECT C.CAMPAIGN_CODE, C.CAMPAIGN_NAME, C.CONTENT, C.START_TIME, C.END_TIME, C.STATUS, CA.STATUS AS AGENT_STATUS, C.CAMPAIGN_ID ")
.append(" FROM CAMPAIGN C INNER JOIN CAMPAIGN_AGENT CA ON C.CAMPAIGN_ID = CA.CAMPAIGN_ID ")
.append(" WHERE 1 = 1 ")
.append(" AND CA.AGENT_ID = :pAgentId ");
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignCode())) {
expression.append(" AND C.CAMPAIGN_CODE IN (:pCampaignCode) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignName())) {
expression.append(" AND UPPER(C.CAMPAIGN_NAME) LIKE :pCampaignName ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getStatus().longValue())) {
if (campaignRequestDto.getStatus() != 0)
expression.append(" AND C.STATUS = :pStatus ");
} else {
expression.append(" AND C.STATUS IN (2, 3) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateFr())) {
expression.append(" AND TRUNC(C.START_TIME) >= TRUNC(:pStartTimeFr) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateTo())) {
expression.append(" AND TRUNC(C.START_TIME) <= TRUNC(:pStartTimeTo) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateFr())) {
expression.append(" AND TRUNC(C.END_TIME) >= TRUNC(:pEndTimeFr) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateTo())) {
expression.append(" AND TRUNC(C.END_TIME) <= TRUNC(:pEndTimeTo) ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusFr())) {
expression.append(" AND C.CUSTOMER_NUMBER >= :pCustNumFr ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusTo())) {
expression.append(" AND C.CUSTOMER_NUMBER <= :pCustNumTo ");
}
try {
Query query = entityManager.createNativeQuery(expression.toString());
query.setParameter("pAgentId", Long.parseLong(campaignRequestDto.getAgentId()));
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignCode())) {
String[] lstCode = campaignRequestDto.getCampaignCode().split(",");
query.setParameter("pCampaignCode", lstCode);
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignName())) {
query.setParameter("pCampaignName", "%" +
campaignRequestDto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\\\%")
.replaceAll("_", "\\\\_")
+ "%");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getStatus().longValue())) {
if (campaignRequestDto.getStatus() != 0)
query.setParameter("pStatus", campaignRequestDto.getStatus());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateFr())) {
query.setParameter("pStartTimeFr", campaignRequestDto.getFromDateFr());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateTo())) {
query.setParameter("pStartTimeTo", campaignRequestDto.getFromDateTo());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateFr())) {
query.setParameter("pEndTimeFr", campaignRequestDto.getToDateFr());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateTo())) {
query.setParameter("pEndTimeTo", campaignRequestDto.getToDateTo());
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusFr())) {
query.setParameter("pCustNumFr", campaignRequestDto.getNumOfCusFr());
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusTo())) {
query.setParameter("pCustNumTo", campaignRequestDto.getNumOfCusTo());
}
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<Object[]> data = query.getResultList();
//TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(campaignRequestDto.getCampaignId()), Long.parseLong(campaignRequestDto.getCompanySiteId()));
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(campaignRequestDto.getCampaignId()), Long.parseLong(campaignRequestDto.getCompanySiteId()));
for (Object[] obj : data) {
CampaignDTO item = new CampaignDTO();
item.setPage(campaignRequestDto.getPage());
item.setPageSize(campaignRequestDto.getPageSize());
item.setSort(campaignRequestDto.getSort());
item.setCampaignCode((String) obj[0]);
item.setCampaignName((String) obj[1]);
item.setContent((String) obj[2]);
item.setStartTime((Date) obj[3]);
item.setEndTime((Date) obj[4]);
item.setStatus(((BigDecimal) obj[5]).shortValueExact());
item.setAgentStatus(((BigDecimal) obj[6]).shortValueExact());
item.setCampaignId(((BigDecimal) obj[7]).longValueExact());
result.add(item);
}
return result;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
} }
...@@ -37,140 +37,6 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -37,140 +37,6 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
@PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL) @PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager; EntityManager entityManager;
@Override
public ResultDTO searchCampaignExecute(CampaignRequestDTO campaignRequestDto) {
ResultDTO result = new ResultDTO();
List<CampaignDTO> lst = new ArrayList<>();
StringBuilder expression = new StringBuilder()
.append(" SELECT C.CAMPAIGN_CODE, C.CAMPAIGN_NAME, C.CONTENT, C.START_TIME, C.END_TIME, C.STATUS, CA.STATUS AS AGENT_STATUS ")
.append(" FROM CAMPAIGN C INNER JOIN CAMPAIGN_AGENT CA ON C.CAMPAIGN_ID = CA.CAMPAIGN_ID ")
.append(" WHERE 1 = 1 ");
//.append(" AND CA.AGENT_ID = :pAgentId ")
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignCode())) {
expression.append(" AND C.CAMPAIGN_CODE IN (:pCampaignCode) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignName())) {
expression.append(" AND UPPER(C.CAMPAIGN_NAME) LIKE :pCampaignName ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getStatus().longValue())) {
if (campaignRequestDto.getStatus() != 0)
expression.append(" AND C.STATUS = :pStatus ");
else
expression.append(" AND C.STATUS IN (1, 2, 3) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateFr())) {
expression.append(" AND TRUNC(C.START_TIME) >= TRUNC(:pStartTimeFr) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateTo())) {
expression.append(" AND TRUNC(C.START_TIME) <= TRUNC(:pStartTimeTo) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateFr())) {
expression.append(" AND TRUNC(C.END_TIME) >= TRUNC(:pEndTimeFr) ");
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateTo())) {
expression.append(" AND TRUNC(C.END_TIME) <= TRUNC(:pEndTimeTo) ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusFr())) {
expression.append(" AND C.CUSTOMER_NUMBER >= :pCustNumFr ");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusTo())) {
expression.append(" AND C.CUSTOMER_NUMBER <= :pCustNumTo ");
}
try {
Query query = entityManager.createNativeQuery(expression.toString());
//query.setParameter("pAgentId", campaignRequestDto.getAgentId());
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignCode())) {
String[] lstCode = campaignRequestDto.getCampaignCode().split(",");
query.setParameter("pCampaignCode", lstCode);
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getCampaignName())) {
query.setParameter("pCampaignName", "%" +
campaignRequestDto.getCampaignName().toUpperCase()
.replace("\\", "\\\\")
.replaceAll("%", "\\\\%")
.replaceAll("_", "\\\\_")
+ "%");
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getStatus().longValue())) {
if (campaignRequestDto.getStatus() != 0)
query.setParameter("pStatus", campaignRequestDto.getStatus());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateFr())) {
query.setParameter("pStartTimeFr", campaignRequestDto.getFromDateFr());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getFromDateTo())) {
query.setParameter("pStartTimeTo", campaignRequestDto.getFromDateTo());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateFr())) {
query.setParameter("pEndTimeFr", campaignRequestDto.getToDateFr());
}
if (!DataUtil.isNullOrEmpty(campaignRequestDto.getToDateTo())) {
query.setParameter("pEndTimeTo", campaignRequestDto.getToDateTo());
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusFr())) {
query.setParameter("pCustNumFr", campaignRequestDto.getNumOfCusFr());
}
if (!DataUtil.isNullOrZero(campaignRequestDto.getNumOfCusTo())) {
query.setParameter("pCustNumTo", campaignRequestDto.getNumOfCusTo());
}
result.setTotalRow(query.getResultList().size());
Pageable pageable = SQLBuilder.buildPageable(campaignRequestDto);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<Object[]> data = query.getResultList();
for (Object[] obj : data) {
CampaignDTO item = new CampaignDTO();
item.setPage(campaignRequestDto.getPage());
item.setPageSize(campaignRequestDto.getPageSize());
item.setSort(campaignRequestDto.getSort());
item.setCampaignCode((String) obj[0]);
item.setCampaignName((String) obj[1]);
item.setContent((String) obj[2]);
item.setStartTime((Date) obj[3]);
item.setEndTime((Date) obj[4]);
item.setStatus(((BigDecimal) obj[5]).shortValueExact());
item.setAgentStatus(((BigDecimal) obj[6]).shortValueExact());
lst.add(item);
}
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setListData(lst);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Override @Override
public ResultDTO search(CampaignRequestDTO requestDto) { public ResultDTO search(CampaignRequestDTO requestDto) {
logger.info("Start search campaign::"); logger.info("Start search campaign::");
......
package com.viettel.campaign.repository.ccms_full.impl;
/**
* @author anhvd_itsol
*/
public class ScenarioAnswerRepositoryImpl {
}
package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.repository.ccms_full.ScenarioQuestionRepositoryCustom;
import org.springframework.stereotype.Repository;
/**
* @author anhvd_itsol
*/
@Repository
public class ScenarioQuestionRepositoryImpl implements ScenarioQuestionRepositoryCustom {
}
package com.viettel.campaign.repository.ccms_full.impl;
import com.viettel.campaign.repository.ccms_full.ScenarioRepositoryCustom;
import org.springframework.stereotype.Repository;
/**
* @author anhvd_itsol
*/
@Repository
public class ScenarioRepositoryImpl implements ScenarioRepositoryCustom {
}
package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.ResultDTO;
public interface AgentsService {
ResultDTO getAgentsByAgentId(String agentId);
ResultDTO getAllAgentsByCompanySiteId(int page, int pageSize, Long companySiteId);
ResultDTO getAllAgentsSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId);
ResultDTO createCampaignAgents(CampaignAgentsDTO campaignAgentsDTO);
}
...@@ -2,13 +2,14 @@ package com.viettel.campaign.service; ...@@ -2,13 +2,14 @@ package com.viettel.campaign.service;
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 com.viettel.campaign.web.dto.request_dto.CampaignCompleteCodeRequestDTO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public interface CampaignCompleteCodeService { public interface CampaignCompleteCodeService {
Map listAllCompleteCode(int page, int pageSize, String sort); ResultDTO listAllCompleteCode(int page, int pageSize, String sort,Long companySiteId);
Map listCompleteCodeByName(int page, int pageSize, String sort, String name); Map listCompleteCodeByName(int page, int pageSize, String sort, String name);
...@@ -16,9 +17,9 @@ public interface CampaignCompleteCodeService { ...@@ -16,9 +17,9 @@ public interface CampaignCompleteCodeService {
ResultDTO updateCompleteCode(CampaignCompleteCodeDTO completeCodeDTO); ResultDTO updateCompleteCode(CampaignCompleteCodeDTO completeCodeDTO);
ResultDTO deleteCompleteCode(CampaignCompleteCodeDTO completeCodeDTO); ResultDTO deleteCompleteCode(CampaignCompleteCodeRequestDTO completeCodeDTO);
ResultDTO deleteList(List<Long> completeCodeDtos); ResultDTO deleteList(CampaignCompleteCodeRequestDTO campaignCompleteCodeRequestDTO);
ResultDTO deleteById(Long id); ResultDTO deleteById(Long id);
...@@ -28,4 +29,6 @@ public interface CampaignCompleteCodeService { ...@@ -28,4 +29,6 @@ public interface CampaignCompleteCodeService {
ResultDTO getListStatusWithoutType(String completeValue, Short completeType, Long companySiteId); ResultDTO getListStatusWithoutType(String completeValue, Short completeType, Long companySiteId);
ResultDTO editCampaignCompleteCode (Long campaignCompleteCodeId);
} }
package com.viettel.campaign.service; package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
@Service @Service
public interface CampaignExecuteService { public interface CampaignExecuteService {
//<editor-fold: hungtt> //<editor-fold: hungtt>
...@@ -15,5 +18,13 @@ public interface CampaignExecuteService { ...@@ -15,5 +18,13 @@ public interface CampaignExecuteService {
ResultDTO searchInteractiveResult(CampaignRequestDTO dto); ResultDTO searchInteractiveResult(CampaignRequestDTO dto);
XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto); XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto);
List<ContactCustResultDTO> getContactCustById(CampaignRequestDTO dto);
//</editor-fold> //</editor-fold>
ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto);
ResultDTO getExecuteCampaign(CampaignRequestDTO requestDto);
ResultDTO getCall(CampaignRequestDTO dto);
} }
...@@ -13,7 +13,6 @@ import java.util.List; ...@@ -13,7 +13,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public interface CampaignService { public interface CampaignService {
ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto);
ResultDTO search(CampaignRequestDTO requestDto); ResultDTO search(CampaignRequestDTO requestDto);
...@@ -44,4 +43,8 @@ public interface CampaignService { ...@@ -44,4 +43,8 @@ public interface CampaignService {
List<TimeRangeDialMode> getCampaignTimeRangeMode (Long campaignId, Long companySiteId); List<TimeRangeDialMode> getCampaignTimeRangeMode (Long campaignId, Long companySiteId);
List<TimeZoneDialMode> getCampaignTimeZoneMode (Long campaignId, Long companySiteId); List<TimeZoneDialMode> getCampaignTimeZoneMode (Long campaignId, Long companySiteId);
ResultDTO renewCampaign(CampaignDTO campaignDTO);
ResultDTO updateCampaign(CampaignDTO dto);
} }
...@@ -6,6 +6,7 @@ import com.viettel.campaign.web.dto.*; ...@@ -6,6 +6,7 @@ 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.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import java.io.File;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -57,8 +58,11 @@ public interface CustomerService { ...@@ -57,8 +58,11 @@ public interface CustomerService {
ResultDTO getCustomerRecall(Long campaignId, Long customerId); ResultDTO getCustomerRecall(Long campaignId, Long customerId);
List<Customer> findAllByCondition(Long siteId, Date endTime); List<Customer> findAllByCondition(Long siteId, Date endTime);
Customer update(Customer c); Customer update(Customer c);
List<DynamicExcelHeaderDTO> getDynamicHeader(Long companySiteId);
void buildTemplate(Long companySiteId);
List<CustomizeFieldDTO> getCustomizeField(Long customerId);
} }
package com.viettel.campaign.service;
/**
* @author anhvd_itsol
*/
public interface ScenarioAnswerService {
}
package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioQuestionDTO;
/**
* @author anhvd_itsol
*/
public interface ScenarioQuestionService {
ResultDTO findByScenarioIdAndCampaignIdAndCompanySiteId(Long scenarioId, Long campaignId, Long companySiteId);
ResultDTO add(ScenarioQuestionDTO scenarioQuestionDTO);
}
package com.viettel.campaign.service;
import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioDTO;
/**
* @author anhvd_itsol
*/
public interface ScenarioService {
Scenario findScenarioByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
ResultDTO update(ScenarioDTO scenario);
}
package com.viettel.campaign.service.impl;
<<<<<<< HEAD
import com.viettel.campaign.mapper.CampaignAgentsMapper;
=======
import com.viettel.campaign.config.DataSourceQualify;
>>>>>>> 2e6e4f6376f75cec918507c48f3fa0c6b5344fd0
import com.viettel.campaign.model.acd_full.Agents;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.repository.acd_full.AgentsRepository;
import com.viettel.campaign.repository.ccms_full.CampaignAgentsRepository;
import com.viettel.campaign.service.AgentsService;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.VSAUsersDTO;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.hibernate.type.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class AgentsServiceImpl implements AgentsService {
@Autowired
AgentsRepository agentsRepository;
@Autowired
CampaignAgentsRepository campaignAgentsRepository;
@Override
public ResultDTO getAgentsByAgentId(String agentId) {
ResultDTO result = new ResultDTO();
try {
Agents data = agentsRepository.findByAgentId(agentId);
if (data != null) {
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription("agents data");
result.setData(data);
} else {
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription("agents data null");
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Override
@Transactional(DataSourceQualify.ACD_FULL)
public ResultDTO getAllAgentsByCompanySiteId(int page, int pageSize, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
if (DataUtil.isNullOrZero(companySiteId)) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
sqlStrBuilder.append(" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sqlStrBuilder.append(" WHERE 1 = 1");
sqlStrBuilder.append(" AND a.COMPANY_SITE_ID = :p_company_site_id");
sqlStrBuilder.append(" AND b.AGENT_ID IS NULL");
sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.addScalar("userId", new LongType());
query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType());
query.addScalar("userTypeId", new LongType());
query.addScalar("createDate", new DateType());
query.addScalar("description", new StringType());
query.addScalar("staffCode", new StringType());
query.addScalar("managerId", new LongType());
query.addScalar("locationId", new LongType());
query.addScalar("deptId", new LongType());
query.addScalar("deptLevel", new StringType());
query.addScalar("posId", new LongType());
query.addScalar("deptName", new StringType());
query.addScalar("groupId", new LongType());
query.addScalar("siteId", new LongType());
query.addScalar("companySiteId", new LongType());
query.addScalar("agentType", new ShortType());
query.addScalar("mobileNumber", new StringType());
query.addScalar("facebookId", new StringType());
query.addScalar("loginType", new ShortType());
query.addScalar("googleId", new StringType());
query.addScalar("email", new StringType());
query.addScalar("availableTicket", new LongType());
query.addScalar("userKazooId", new StringType());
query.addScalar("filterType", new ShortType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
int count = 0;
List<VSAUsersDTO> dtoList = query.list();
if (dtoList.size() > 0) {
count = query.list().size();
}
Pageable pageable = PageRequest.of(page, pageSize);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<VSAUsersDTO> data = query.list();
Page<VSAUsersDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally {
session.close();
}
return resultDTO;
}
@Override
public ResultDTO getAllAgentsSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId) {
ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
if (DataUtil.isNullOrZero(companySiteId)) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
sqlStrBuilder.append(" RIGHT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sqlStrBuilder.append(" WHERE 1 = 1");
sqlStrBuilder.append(" AND b.COMPANY_SITE_ID = :p_company_site_id");
sqlStrBuilder.append(" AND b.CAMPAIGN_ID = :p_campaign_id");
sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_campaign_id", campaignId);
query.addScalar("userId", new LongType());
query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType());
query.addScalar("userTypeId", new LongType());
query.addScalar("createDate", new DateType());
query.addScalar("description", new StringType());
query.addScalar("staffCode", new StringType());
query.addScalar("managerId", new LongType());
query.addScalar("locationId", new LongType());
query.addScalar("deptId", new LongType());
query.addScalar("deptLevel", new StringType());
query.addScalar("posId", new LongType());
query.addScalar("deptName", new StringType());
query.addScalar("groupId", new LongType());
query.addScalar("siteId", new LongType());
query.addScalar("companySiteId", new LongType());
query.addScalar("agentType", new ShortType());
query.addScalar("mobileNumber", new StringType());
query.addScalar("facebookId", new StringType());
query.addScalar("loginType", new ShortType());
query.addScalar("googleId", new StringType());
query.addScalar("email", new StringType());
query.addScalar("availableTicket", new LongType());
query.addScalar("userKazooId", new StringType());
query.addScalar("filterType", new ShortType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
int count = 0;
List<VSAUsersDTO> dtoList = query.list();
if (dtoList.size() > 0) {
count = query.list().size();
}
Pageable pageable = PageRequest.of(page, pageSize);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<VSAUsersDTO> data = query.list();
Page<VSAUsersDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally {
session.close();
}
return resultDTO;
}
@Override
public ResultDTO createCampaignAgents(CampaignAgentsDTO campaignAgentsDTO) {
ResultDTO resultDTO = new ResultDTO();
CampaignAgentsMapper campaignAgentsMapper = new CampaignAgentsMapper();
CampaignAgent campaignAgent = new CampaignAgent();
try {
if (campaignAgentsDTO != null) {
// insert
campaignAgent = campaignAgentsMapper.toPersistenceBean(campaignAgentsDTO);
campaignAgentsRepository.save(campaignAgent);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
e.printStackTrace();
}
return resultDTO;
}
}
...@@ -2,6 +2,7 @@ package com.viettel.campaign.service.impl; ...@@ -2,6 +2,7 @@ package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.mapper.CampaignCompleteCodeMapper; import com.viettel.campaign.mapper.CampaignCompleteCodeMapper;
import com.viettel.campaign.model.ccms_full.CampaignCompleteCode; import com.viettel.campaign.model.ccms_full.CampaignCompleteCode;
import com.viettel.campaign.repository.ccms_full.CampaignCompleteCodeRepository; import com.viettel.campaign.repository.ccms_full.CampaignCompleteCodeRepository;
import com.viettel.campaign.service.CampaignCompleteCodeService; import com.viettel.campaign.service.CampaignCompleteCodeService;
...@@ -11,18 +12,19 @@ import com.viettel.campaign.utils.HibernateUtil; ...@@ -11,18 +12,19 @@ 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 com.viettel.campaign.web.dto.request_dto.CampaignCompleteCodeRequestDTO;
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.LongType;
import org.hibernate.type.ShortType;
import org.hibernate.type.StringType; import org.hibernate.type.StringType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.*;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -38,12 +40,72 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -38,12 +40,72 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public Map listAllCompleteCode(int page, int pageSize, String sort) { public ResultDTO listAllCompleteCode(int page, int pageSize, String sort,Long companySiteId) {
Map result = new HashMap(); ResultDTO resultDTO = new ResultDTO();
Page<CampaignCompleteCode> pg = completeCodeRepository.findAll(PageRequest.of(page, pageSize, Sort.by(sort))); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
result.put("totalItems", pg.getTotalElements());
result.put("data", pg.iterator()); Session session = sessionFactory.openSession();
return result; session.beginTransaction();
if (DataUtil.isNullOrZero(companySiteId)) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "findAll-CampaignCompleteCode"));
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.addScalar("campaignCompleteCodeId", new LongType());
query.addScalar("campaignId", new LongType());
query.addScalar("completeName", new StringType());
query.addScalar("completeValue", new StringType());
query.addScalar("description", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("completeType", new ShortType());
query.addScalar("isRecall", new ShortType());
query.addScalar("updateAt", new DateType());
query.addScalar("updateBy", new StringType());
query.addScalar("createBy", new StringType());
query.addScalar("createAt", new DateType());
query.addScalar("campaignType", new StringType());
query.addScalar("isFinish", new ShortType());
query.addScalar("isLock", new ShortType());
query.addScalar("companySiteId", new LongType());
query.addScalar("durationLock", new LongType());
query.addScalar("chanel", new LongType());
query.setResultTransformer(Transformers.aliasToBean(CampaignCompleteCodeDTO.class));
int count = 0;
List<CampaignCompleteCodeDTO> dtoList = query.list();
if (dtoList.size() > 0) {
count = query.list().size();
}
Pageable pageable = PageRequest.of(page, pageSize, Sort.by(Sort.Order.desc(sort)));
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<CampaignCompleteCodeDTO>data = query.list();
Page<CampaignCompleteCodeDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
logger.error(e.getMessage(), e);
} finally {
session.close();
}
return resultDTO;
} }
@Override @Override
...@@ -118,23 +180,21 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -118,23 +180,21 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) { public ResultDTO deleteCompleteCode(CampaignCompleteCodeRequestDTO completeCodeDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CampaignCompleteCodeMapper compCodeMapper = new CampaignCompleteCodeMapper();
Date today = new Date();
CampaignCompleteCode compCode = new CampaignCompleteCode();
try { try {
// delete
if (completeCodeDTO != null) { if (completeCodeDTO != null) {
// delete completeCodeRepository.deleteCampaignCompleteCodeBy(completeCodeDTO.getCampaignCompleteCodeID(), completeCodeDTO.getCompanySiteId());
completeCodeRepository.deleteById(completeCodeDTO.getCampaignCompleteCodeId());
resultDTO.setErrorCode("0"); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription("Complete Code: " + compCode.getCampaignCompleteCodeId() + " deleted!"); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else { } else {
resultDTO.setErrorCode("-2"); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription("CompleteCodeDTO null"); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -142,22 +202,24 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -142,22 +202,24 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
return resultDTO; return resultDTO;
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO deleteList(List<Long> completeCodeDtos) { public ResultDTO deleteList(CampaignCompleteCodeRequestDTO completeCodeDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
completeCodeRepository.deleteds(completeCodeDtos); if (completeCodeDTO != null) {
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); completeCodeRepository.deletedList(completeCodeDTO.getListId(), completeCodeDTO.getCompanySiteId());
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) { } catch (Exception e) {
resultDTO.setErrorCode("-1"); e.printStackTrace();
return resultDTO;
} }
// }
resultDTO.setErrorCode("0");
return resultDTO; return resultDTO;
} }
...@@ -179,35 +241,6 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -179,35 +241,6 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
return result; return result;
} }
// @Override
// public ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) {
// ResultDTO resultDTO = new ResultDTO();
// CampaignCompleteCodeMapper campaignCompleteCodeMapper = new CampaignCompleteCodeMapper();
// try {
// short maxValue = 0;
//// List<CampaignCompleteCode> list = completeCodeRepository.findCampaignCompleteCodesByCompanySiteId(completeCodeDTO.getCompanySiteId());
//// for (int i = 0; i<list.size();i++) {
//// if (list.get(i).getCompleteValue() != null && !list.get(i).getCompleteValue().equals("")) {
//// if (maxValue < Short.parseShort(list.get(i).getCompleteValue())) {
//// maxValue = Short.parseShort(list.get(i).getCompleteValue());
//// }
//// }
//// }
// maxValue = completeCodeRepository.findByMaxCompanySiteId(completeCodeDTO.getCompanySiteId());
// if (maxValue < 4) {
// maxValue = 4;
// }
// maxValue+= 1;
// resultDTO.setData(maxValue);
// resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
// resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
// } catch (Exception e) {
// resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
// resultDTO.setDescription(e.getMessage());
// logger.error(e.getMessage(), e);
// }
// return resultDTO;
// }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
...@@ -237,7 +270,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -237,7 +270,7 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
List<CampaignCompleteCodeDTO> data = query.list(); List<CampaignCompleteCodeDTO> data = query.list();
if (data != null && data.size() > 0) { if (data != null && data.size() > 0) {
int tmp = 4; int tmp = 5;
String completeValue = data.get(0).getCompleteValue(); String completeValue = data.get(0).getCompleteValue();
if (completeValue != null && !completeValue.trim().equals("")) { if (completeValue != null && !completeValue.trim().equals("")) {
tmp = Integer.parseInt(completeValue) + 1; tmp = Integer.parseInt(completeValue) + 1;
...@@ -292,28 +325,61 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -292,28 +325,61 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
return resultDTO; return resultDTO;
} }
// @Override @Override
// public ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) { @Transactional(DataSourceQualify.CCMS_FULL)
// ResultDTO result = new ResultDTO(); public ResultDTO editCampaignCompleteCode(Long campaignCompleteCodeId) {
// CampaignCompleteCodeMapper campaignCompleteCodeMapper = new CampaignCompleteCodeMapper(); ResultDTO resultDTO = new ResultDTO();
// CampaignCompleteCode campaignCompleteCode = new CampaignCompleteCode(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
// try{
// short resultmaxValue = completeCodeRepository.findByMaxCompanySiteId(completeCodeDTO.getCompanySiteId()); Session session = sessionFactory.openSession();
// campaignCompleteCode.setCompleteValue(String.valueOf(resultmaxValue + 1)); session.beginTransaction();
//// if (resultmaxValue < 4) {
//// resultmaxValue =4; if (DataUtil.isNullOrZero(campaignCompleteCodeId)) {
//// } resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
// result.setData(resultmaxValue); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
// result.setErrorCode(Constants.Status.ACTIVE_STR); return resultDTO;
// result.setDescription(Constants.Status.ACTIVE_STR); }
// }
// catch (Exception e){ try {
// logger.error(e.getMessage(), e); StringBuilder sqlStrBuilder = new StringBuilder();
// result.setErrorCode("-1"); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG,"findCampaignCodeById"));
// return result;
// } SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
// result.setErrorCode("0");
// return result; query.setParameter("p_campaignComleteCode",campaignCompleteCodeId);
// }
query.addScalar("campaignCompleteCodeId", new LongType());
query.addScalar("campaignId", new LongType());
query.addScalar("completeName", new StringType());
query.addScalar("completeValue", new StringType());
query.addScalar("description", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("completeType", new ShortType());
query.addScalar("isRecall", new ShortType());
query.addScalar("updateAt", new DateType());
query.addScalar("updateBy", new StringType());
query.addScalar("createBy", new StringType());
query.addScalar("createAt", new DateType());
query.addScalar("campaignType", new StringType());
query.addScalar("isFinish", new ShortType());
query.addScalar("isLock", new ShortType());
query.addScalar("companySiteId", new LongType());
query.addScalar("durationLock", new LongType());
query.addScalar("chanel", new LongType());
query.setResultTransformer(Transformers.aliasToBean(CampaignCompleteCodeDTO.class));
List<CampaignCompleteCodeDTO>data = query.list();
resultDTO.setData(data);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
logger.error(e.getMessage(), e);
} finally {
session.close();
}
return resultDTO;
}
} }
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.repository.ccms_full.CampaignExecuteRepository; import com.viettel.campaign.model.acd_full.Agents;
import com.viettel.campaign.model.ccms_full.TimeRangeDialMode;
import com.viettel.campaign.model.ccms_full.TimeZoneDialMode;
import com.viettel.campaign.repository.acd_full.AgentsRepository;
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.BundleUtils;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.ApParamDTO; import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO; import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
...@@ -19,9 +24,7 @@ import org.springframework.stereotype.Service; ...@@ -19,9 +24,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Locale;
@Service @Service
public class CampaignExecuteServiceImp implements CampaignExecuteService { public class CampaignExecuteServiceImp implements CampaignExecuteService {
...@@ -29,9 +32,24 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -29,9 +32,24 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
private static final Logger logger = LoggerFactory.getLogger(CampaignExecuteServiceImp.class); private static final Logger logger = LoggerFactory.getLogger(CampaignExecuteServiceImp.class);
private SimpleDateFormat formatter = new SimpleDateFormat(Constants.DATE_FORMAT.FOMART_DATE_TYPE_1); private SimpleDateFormat formatter = new SimpleDateFormat(Constants.DATE_FORMAT.FOMART_DATE_TYPE_1);
@Autowired
CampaignRepositoryCustom campaignRepositoryCustom;
@Autowired @Autowired
CampaignExecuteRepository campaignExecuteRepository; CampaignExecuteRepository campaignExecuteRepository;
@Autowired
AgentsRepository agentsRepository;
@Autowired
CampaignAgentRepository campaignAgentRepository;
@Autowired
TimeZoneDialModeRepository zoneDialModeRepository;
@Autowired
TimeRangeDialModeRepository rangeDialModeRepository;
//<editor-fold: hungtt> //<editor-fold: hungtt>
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
...@@ -178,6 +196,12 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -178,6 +196,12 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return workbook; return workbook;
} }
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<ContactCustResultDTO> getContactCustById(CampaignRequestDTO dto) {
return campaignExecuteRepository.getContactCustById(dto);
}
private void writeCellContent(Row row, CellStyle rowStyle, int colNo, Object content) { private void writeCellContent(Row row, CellStyle rowStyle, int colNo, Object content) {
Cell cell = row.createCell(colNo); Cell cell = row.createCell(colNo);
if (content == null) { if (content == null) {
...@@ -188,4 +212,76 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService { ...@@ -188,4 +212,76 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
cell.setCellStyle(rowStyle); cell.setCellStyle(rowStyle);
} }
//</editor-fold: hungtt> //</editor-fold: hungtt>
@Override
public ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto) {
ResultDTO result = new ResultDTO();
Map data = new HashMap();
Integer count = campaignExecuteRepository.searchCampaignExecute(requestDto, null).size();
if (count > 0) {
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setTotalRow(count);
result.setListData(campaignExecuteRepository.searchCampaignExecute(requestDto, SQLBuilder.buildPageable(requestDto)));
Agents agents = agentsRepository.findByAgentId(requestDto.getAgentId());
//TimeZoneDialMode zoneDialMode = zoneDialModeRepository.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().equalsIgnoreCase("CALLOUT") && agents.getCampaignSystemStatus().equalsIgnoreCase("AVAILABLE")) {
//if (zoneDialMode != null && zoneDialMode.getDialMode().equals(0) || rangeDialMode != null && rangeDialMode.getDialMode().equals(0))
data.put("dialModeManual", "1");
}
}
result.setData(data);
} else {
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
}
return result;
}
@Override
public ResultDTO getExecuteCampaign(CampaignRequestDTO requestDto) {
ResultDTO result = new ResultDTO();
try {
Agents agents = agentsRepository.findByAgentId(requestDto.getAgentId());
//TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
//TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(requestDto.getCampaignId()), Long.parseLong(requestDto.getCompanySiteId()));
if (agents.getUserStatus().equalsIgnoreCase("CALLOUT") && agents.getCampaignSystemStatus().equalsIgnoreCase("LOGOUT")) {
//if (zoneDialMode != null && zoneDialMode.getDialMode().equals(0) || rangeDialMode != null && rangeDialMode.getDialMode().equals(0))
// update acd_full.agents table
Agents a = new Agents();
a.setAgentId(requestDto.getAgentId());
a.setCampaignSystemStatus("AVAILABLE");
a.setCurrentCampaignId(Long.parseLong(requestDto.getCampaignId()));
agentsRepository.save(a);
// update ccms_full.campaign_agent table
campaignAgentRepository.updateCampaignAgentSetStatus(Long.parseLong(requestDto.getAgentId()), Long.parseLong(requestDto.getCampaignId()), 1);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Override
public ResultDTO getCall(CampaignRequestDTO dto) {
ResultDTO result = new ResultDTO();
Map data = new HashMap();
data.put("campaignId", dto.getCampaignId());
Agents agents = agentsRepository.findByAgentId(dto.getAgentId());
TimeZoneDialMode zoneDialMode = zoneDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId()));
TimeRangeDialMode rangeDialMode = rangeDialModeRepository.findDialModeAtCurrent(Long.parseLong(dto.getCampaignId()), Long.parseLong(dto.getCompanySiteId()));
return result;
}
} }
...@@ -15,6 +15,7 @@ import com.viettel.campaign.utils.DataUtil; ...@@ -15,6 +15,7 @@ import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.WorkBookBuilder; import com.viettel.campaign.utils.WorkBookBuilder;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import oracle.jdbc.driver.Const;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
...@@ -60,12 +61,6 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -60,12 +61,6 @@ public class CampaignServiceImpl implements CampaignService {
@Autowired @Autowired
ApParamRepository apParamRepository; ApParamRepository apParamRepository;
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto) {
return campaignRepositoryCustom.searchCampaignExecute(requestDto);
}
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO search(CampaignRequestDTO requestDto) { public ResultDTO search(CampaignRequestDTO requestDto) {
...@@ -167,6 +162,7 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -167,6 +162,7 @@ public class CampaignServiceImpl implements CampaignService {
return resultDTO; return resultDTO;
} }
@Transactional(DataSourceQualify.CCMS_FULL)
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);
...@@ -227,20 +223,14 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -227,20 +223,14 @@ public class CampaignServiceImpl implements CampaignService {
userActionLog.setObjectId(entity.getCampaignId()); userActionLog.setObjectId(entity.getCampaignId());
if (dto.getStatus().equals((short) -1)) { if (dto.getStatus().equals((short) -1)) {
userActionLog.setActionType((short) 2); userActionLog.setActionType((short) 2);
} } else if (dto.getStatus().equals((short) 1)) {
else if(dto.getStatus().equals((short) 4)) { userActionLog.setActionType((short) 3);
userActionLog.setActionType((short) 7); } else if (dto.getStatus().equals((short) 2)) {
} userActionLog.setActionType((short) 5);
else if(dto.getStatus().equals((short) 3)) { } else if (dto.getStatus().equals((short) 3)) {
userActionLog.setActionType((short) 4); userActionLog.setActionType((short) 4);
}
else if(dto.getStatus().equals((short) 2)) {
} else if (dto.getStatus().equals((short) 5)) {
userActionLog.setActionType((short) 7);
} else if (dto.getStatus().equals((short) 4)) { } else if (dto.getStatus().equals((short) 4)) {
userActionLog.setActionType((short) 4); userActionLog.setActionType((short) 7);
} else if (dto.getStatus().equals((short) 3)) {
userActionLog.setActionType((short) 5);
} }
userActionLogRepository.insertToUserActionLog(userActionLog); userActionLogRepository.insertToUserActionLog(userActionLog);
...@@ -275,7 +265,7 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -275,7 +265,7 @@ public class CampaignServiceImpl implements CampaignService {
XSSFWorkbook workbook = new XSSFWorkbook(); XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet; Sheet sheet;
CellStyle styleTitle = WorkBookBuilder.buildDefaultStyleTitle(workbook); CellStyle styleTitle = WorkBookBuilder.buildDefaultStyleTitle(workbook);
CellStyle styleRowHeader = WorkBookBuilder.buildDefaultStyleRowHeader(workbook); CellStyle styleRowHeader = WorkBookBuilder.buildDefaultStyleRowHeader(workbook);
CellStyle styleRow = WorkBookBuilder.buildDefaultStyleRow(workbook); CellStyle styleRow = WorkBookBuilder.buildDefaultStyleRow(workbook);
...@@ -339,15 +329,113 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -339,15 +329,113 @@ public class CampaignServiceImpl implements CampaignService {
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<TimeRangeDialMode> getCampaignTimeRangeMode(Long campaignId, Long companySiteId) { public List<TimeRangeDialMode> getCampaignTimeRangeMode(Long campaignId, Long companySiteId) {
return timeRangeDialModeRepository.findTimeRangeDialModeByCampaignIdAndCompanySiteId(campaignId, companySiteId); return timeRangeDialModeRepository.findTimeRangeDialModeByCampaignIdAndCompanySiteId(campaignId, companySiteId);
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<TimeZoneDialMode> getCampaignTimeZoneMode(Long campaignId, Long companySiteId) { public List<TimeZoneDialMode> getCampaignTimeZoneMode(Long campaignId, Long companySiteId) {
return timeZoneDialModeRepository.findTimeZoneDialModeByCampaignIdAndCompanySiteId(campaignId, companySiteId); return timeZoneDialModeRepository.findTimeZoneDialModeByCampaignIdAndCompanySiteId(campaignId, companySiteId);
} }
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO renewCampaign(CampaignDTO campaignDTO) {
ResultDTO resultDTO = new ResultDTO();
try {
Campaign entity = campaignRepository.findCampaignByCampaignIdAndCompanySiteId(campaignDTO.getCampaignId(), campaignDTO.getCompanySiteId());
if (entity != null) {
entity.setStatus(campaignDTO.getStatus().longValue());
entity.setUpdateTime(new Date());
entity.setUpdateBy(campaignDTO.getUpdateBy());
entity.setEndTime(campaignDTO.getEndTime());
campaignRepository.save(entity);
UserActionLogDTO userActionLog = new UserActionLogDTO();
userActionLog.setAgentId(null);
userActionLog.setSessionId(campaignDTO.getSessionId());
userActionLog.setCompanySiteId(campaignDTO.getCompanySiteId());
userActionLog.setDescription(null);
userActionLog.setStartTime(new Date());
userActionLog.setEndTime(null);
userActionLog.setObjectId(entity.getCampaignId());
userActionLog.setActionType((short) 6);
userActionLogRepository.insertToUserActionLog(userActionLog);
resultDTO.setData(entity);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO updateCampaign(CampaignDTO dto) {
ResultDTO resultDTO = new ResultDTO();
List<TimeZoneDialModeDTO> lstTimeZone = dto.getLstTimeZone();
List<TimeRangeDialModeDTO> lstTimeRange = dto.getLstTimeRange();
// Campaign campaignEntity = modelMapper.map(dto, Campaign.class);
Campaign campaignEntity = new Campaign();
campaignEntity.setCampaignId(dto.getCampaignId());
campaignEntity.setContent(dto.getContent());
campaignEntity.setCustomerNumber(dto.getCustomerNumber());
campaignEntity.setStartTime(dto.getStartTime());
campaignEntity.setEndTime(dto.getEndTime());
campaignEntity.setMaxRecall(dto.getMaxRecall());
campaignEntity.setRecallType(dto.getRecallType());
campaignEntity.setRecallDuration(dto.getRecallDuration());
campaignEntity.setUpdateBy(dto.getUpdateBy());
campaignEntity.setUpdateTime(dto.getUpdateTime());
campaignEntity.setCampaignType(dto.getCampaignType());
campaignEntity.setProcessStatus(null);
campaignEntity.setDialMode(null);
campaignEntity.setTimeRange(null);
campaignEntity.setCurrentTimeMode(dto.getCurrentTimeMode());
campaignEntity.setIsApplyCustLock(dto.getIsApplyCustLock());
campaignEntity.setWrapupTimeConnect(dto.getWrapupTimeConnect());
campaignEntity.setWrapupTimeDisconnect(dto.getWrapupTimeDisconnect());
campaignEntity.setPreviewTime(dto.getPreviewTime());
campaignEntity.setRateDial(dto.getRateDial());
campaignEntity.setRateMiss(dto.getRateMiss());
campaignEntity.setAvgTimeProcess(dto.getAvgTimeProcess());
campaignEntity.setMusicList(dto.getMusicList());
campaignEntity.setTimePlayMusic(dto.getTimePlayMusic());
campaignEntity.setCampaignStart(dto.getCampaignStart());
campaignEntity.setCampaignEnd(dto.getCampaignEnd());
campaignEntity.setTimeWaitAgent(null);
campaignEntity.setQuestIndex(null);
try {
// Save campaign to database
campaignRepository.save(campaignEntity);
// Save time dial
for (TimeRangeDialModeDTO timeRangeDto : lstTimeRange) {
timeRangeDto.setCampaignId(dto.getCampaignId());
TimeRangeDialMode timeRangeEntity = modelMapper.map(timeRangeDto, TimeRangeDialMode.class);
timeRangeDialModeRepository.save(timeRangeEntity);
}
for (TimeZoneDialModeDTO timeZoneDto : lstTimeZone) {
timeZoneDto.setCampaignId(dto.getCampaignId());
TimeZoneDialMode timeZoneEntity = modelMapper.map(timeZoneDto, TimeZoneDialMode.class);
timeZoneDialModeRepository.save(timeZoneEntity);
}
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;
}
private String generateCampaignCode(String campaignType, Short chanel) { private String generateCampaignCode(String campaignType, Short chanel) {
int year = Calendar.getInstance().get(Calendar.YEAR); int year = Calendar.getInstance().get(Calendar.YEAR);
String maxIndexStr = campaignRepositoryCustom.getMaxCampaignIndex(); String maxIndexStr = campaignRepositoryCustom.getMaxCampaignIndex();
...@@ -361,9 +449,9 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -361,9 +449,9 @@ public class CampaignServiceImpl implements CampaignService {
public String getCampaignTypeName(List<ApParam> lstApParams, String type) { public String getCampaignTypeName(List<ApParam> lstApParams, String type) {
String name = ""; String name = "";
if(!DataUtil.isNullOrEmpty(type)) { if (!DataUtil.isNullOrEmpty(type)) {
for(int i = 0; i < lstApParams.size(); i++) { for (int i = 0; i < lstApParams.size(); i++) {
if(type.equals(lstApParams.get(i).getParValue())) { if (type.equals(lstApParams.get(i).getParValue())) {
name = lstApParams.get(i).getParName(); name = lstApParams.get(i).getParName();
break; break;
} }
......
...@@ -7,6 +7,7 @@ import com.viettel.campaign.mapper.CustomerMapper; ...@@ -7,6 +7,7 @@ import com.viettel.campaign.mapper.CustomerMapper;
import com.viettel.campaign.model.ccms_full.Customer; import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.model.ccms_full.CustomerContact; import com.viettel.campaign.model.ccms_full.CustomerContact;
import com.viettel.campaign.model.ccms_full.CustomerList; import com.viettel.campaign.model.ccms_full.CustomerList;
import com.viettel.campaign.model.ccms_full.VSAUsers;
import com.viettel.campaign.repository.ccms_full.*; import com.viettel.campaign.repository.ccms_full.*;
import com.viettel.campaign.service.CustomerService; import com.viettel.campaign.service.CustomerService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
...@@ -16,6 +17,11 @@ import com.viettel.campaign.utils.SQLBuilder; ...@@ -16,6 +17,11 @@ 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.CustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
...@@ -33,11 +39,17 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper; ...@@ -33,11 +39,17 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ResourceUtils;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.*; import java.util.*;
@Service @Service
...@@ -69,6 +81,9 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -69,6 +81,9 @@ public class CustomerServiceImpl implements CustomerService {
@Qualifier(DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL) @Qualifier(DataSourceQualify.NAMED_JDBC_PARAMETER_TEMPLATE_CCMS_FULL)
NamedParameterJdbcTemplate namedParameterJdbcTemplate; NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
VSAUsersRepository vsaUsersRepository;
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId) { public ResultDTO getAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId) {
...@@ -88,7 +103,7 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -88,7 +103,7 @@ public class CustomerServiceImpl implements CustomerService {
StringBuilder sqlStrBuilder = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
sqlStrBuilder.append(" ORDER BY name DESC"); sqlStrBuilder.append(" ORDER BY b.NAME ASC");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
...@@ -678,6 +693,54 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -678,6 +693,54 @@ public class CustomerServiceImpl implements CustomerService {
return result; return result;
} }
@Override
public List<DynamicExcelHeaderDTO> getDynamicHeader(Long companySiteId) {
List<DynamicExcelHeaderDTO> headerList;
try {
String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_CUSTOMER_MNG, "get-dynamic-header");
Map<String, Object> param = new HashMap<>();
param.put("p_company_site_id", companySiteId);
headerList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(DynamicExcelHeaderDTO.class));
} catch (Exception e) {
return null;
}
return headerList;
}
@Override
public void buildTemplate(Long companySiteId) {
try {
List<DynamicExcelHeaderDTO> headerList = getDynamicHeader(companySiteId);
FileInputStream fis = new FileInputStream(ResourceUtils.getFile("classpath:templates/import_customer_template.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(2);
Cell cell = row.createCell(row.getPhysicalNumberOfCells());
cell.setCellType(CellType.STRING);
cell.setCellValue("test");
FileOutputStream fos = new FileOutputStream(ResourceUtils.getFile("classpath:templates/import_customer_template.xlsx"));
workbook.write(fos);
fos.close();
workbook.close();
} catch (Exception e) {
}
}
@Override
public List<CustomizeFieldDTO> getCustomizeField(Long customerId) {
List<CustomizeFieldDTO> customizeFieldDTOList;
try {
String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customize-field");
Map<String, Object> param = new HashMap<>();
param.put("p_customer_id", customerId);
customizeFieldDTOList = namedParameterJdbcTemplate.query(sql, param, new BeanPropertyRowMapper<>(CustomizeFieldDTO.class));
} catch (Exception e) {
return null;
}
return customizeFieldDTOList;
}
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) { public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) {
......
package com.viettel.campaign.service.impl;
import com.viettel.campaign.service.ScenarioAnswerService;
import org.springframework.stereotype.Service;
/**
* @author anhvd_itsol
*/
@Service
public class ScenarioAnswerServiceImpl implements ScenarioAnswerService {
}
package com.viettel.campaign.service.impl;
import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.model.ccms_full.ScenarioQuestion;
import com.viettel.campaign.repository.ccms_full.ScenarioQuestionRepository;
import com.viettel.campaign.service.ScenarioQuestionService;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioQuestionDTO;
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.stereotype.Service;
import java.util.List;
/**
* @author anhvd_itsol
*/
@Service
public class ScenarioQuestionServiceImpl implements ScenarioQuestionService {
private static final Logger logger = LogManager.getLogger(ScenarioQuestionServiceImpl.class);
@Autowired
ScenarioQuestionRepository scenarioQuestionRepository;
@Autowired
ModelMapper modelMapper;
@Override
public ResultDTO findByScenarioIdAndCampaignIdAndCompanySiteId(Long scenarioId, Long campaignId, Long companySiteId) {
ResultDTO resultDTO = new ResultDTO();
try {
List<ScenarioQuestion> lst = scenarioQuestionRepository.findScenarioQuestionsByScenarioIdAndCampaignIdAndCompanySiteIdAndStatus(scenarioId, campaignId, companySiteId, (short)1);
resultDTO.setData(lst);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
@Override
public ResultDTO add(ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = new ResultDTO();
try {
ScenarioQuestion scenarioQuestion = modelMapper.map(scenarioQuestionDTO, ScenarioQuestion.class);
scenarioQuestionRepository.save(scenarioQuestion);
resultDTO.setData(scenarioQuestion);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return null;
}
}
package com.viettel.campaign.service.impl;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.repository.ccms_full.ScenarioRepository;
import com.viettel.campaign.service.ScenarioService;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioDTO;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Date;
/**
* @author anhvd_itsol
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ScenarioServiceImpl implements ScenarioService {
private static final Logger logger = LogManager.getLogger(ScenarioServiceImpl.class);
@Autowired
ScenarioRepository scenarioRepository;
@Autowired
ModelMapper modelMapper;
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public Scenario findScenarioByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId) {
try {
return scenarioRepository.findScenarioByCampaignIdAndCompanySiteId(campaignId, companySiteId);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return null;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO update(ScenarioDTO scenarioDTO) {
ResultDTO resultDTO = new ResultDTO();
try {
scenarioDTO.setUpdateBy(null);
scenarioDTO.setUpdateTime(new Date());
Scenario scenario = modelMapper.map(scenarioDTO, Scenario.class);
scenarioRepository.save(scenario);
resultDTO.setData(scenario);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
}
...@@ -16,6 +16,7 @@ import org.springframework.data.domain.Sort; ...@@ -16,6 +16,7 @@ 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_MNG = "campaign-customer-mng";
public static String getSqlQueryById(String module, public static String getSqlQueryById(String module,
String queryId) { String queryId) {
......
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CampaignAgentsDTO extends BaseDTO {
Long campaignAgentId;
Long campaignId;
Long agentId;
Short filterType;
Integer status;
Long companySiteId;
Long reSchedule;
}
...@@ -19,7 +19,7 @@ public class ContactCustResultDTO extends BaseDTO{ ...@@ -19,7 +19,7 @@ public class ContactCustResultDTO extends BaseDTO{
private Short recordStatus; private Short recordStatus;
private String description; private String description;
private Date createTime; private Date createTime;
private String callTime; private Long callTime;
private Long agentId; private Long agentId;
private Long campaignId; private Long campaignId;
private String campaignName; private String campaignName;
......
...@@ -3,6 +3,8 @@ package com.viettel.campaign.web.dto; ...@@ -3,6 +3,8 @@ package com.viettel.campaign.web.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date;
@Getter @Getter
@Setter @Setter
public class CustomerCustomDTO { public class CustomerCustomDTO {
......
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 CustomizeFieldDTO {
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 status;
private Long fieldOptionValueId;
private String title;
private String functionCode;
}
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 DynamicExcelHeaderDTO {
private Long customizeFieldId;
private Long siteId;
private String functionCode;
private String createBy;
private Date createDate;
private String updateBy;
private Date updateDate;
private Long status;
private String type;
private String title;
private String placeholder;
private String description;
private Long position;
private Long required;
private Long fieldOptionsId;
private String regexpForValidation;
private Long maxLength;
private Long minLength;
private Long min;
private Long max;
private Long active;
}
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public class ScenarioAnswerDTO {
public Long scenarioAnswerId;
public Long companySiteId;
public Long scenarioQuestionId;
public String code;
public String answer;
public Integer orderIndex;
public Short hasInput;
public Short status;
public Date createTime;
public Date deleteTime;
public Long mappingQuestionId;
}
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public class ScenarioDTO {
private Long scenarioId;
private Long companySiteId;
private Long campaignId;
private String code;
private String description;
private String createBy;
private Date createTime;
private Long updateBy;
private Date updateTime;
}
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public class ScenarioQuestionDTO {
private Long scenarioQuestionId;
private Long companySiteId;
private Long campaignId;
private Long scenarioId;
private String code;
private Short type;
private String question;
private Long orderIndex;
private Short status;
private Date createTime;
private Date deleteTime;
private Short isRequire;
private Short isDefault;
private Short answerIndex;
}
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class VSAUsersDTO {
Long userId;
String userName;
Short status;
String fullName;
Long userTypeId;
Date createDate;
String description;
String staffCode;
Long managerId;
Long locationId;
Long deptId;
String deptLevel;
Long posId;
String deptName;
Long groupId;
Long siteId;
Long companySiteId;
Short agentType;
String mobileNumber;
String facebookId;
Short loginType;
String googleId;
String email;
Long availableTicket;
String userKazooId;
Short filterType;
}
package com.viettel.campaign.web.dto.request_dto;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class CampaignCompleteCodeRequestDTO {
List<Long> listId;
Long companySiteId;
Long campaignCompleteCodeID;
}
...@@ -41,4 +41,5 @@ public class CampaignRequestDTO extends BaseDTO { ...@@ -41,4 +41,5 @@ public class CampaignRequestDTO extends BaseDTO {
String campaignId; String campaignId;
String surveyStatus; String surveyStatus;
String roleUser; String roleUser;
String contactCustId;
} }
package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.AgentsService;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@RestController
@RequestMapping("/ipcc/agents")
@CrossOrigin
public class AgentsController {
private static final Logger logger = LoggerFactory.getLogger(CampaignController.class);
@Autowired
AgentsService agentsService;
@GetMapping("/getAgentsById")
@ResponseBody
public ResponseEntity<ResultDTO> getAgentsById(@RequestParam("agentId") String agentId) {
ResultDTO result = agentsService.getAgentsByAgentId(agentId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@GetMapping("/findAll")
@ResponseBody
public ResponseEntity<ResultDTO> listAgentsByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId) {
ResultDTO result = agentsService.getAllAgentsByCompanySiteId(page, pageSize, companySiteId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@GetMapping("/findAllSelected")
@ResponseBody
public ResponseEntity<ResultDTO> listAgentsSelectedByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = agentsService.getAllAgentsSelectedByCompanySiteId(page, pageSize, companySiteId, campaignId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/createCampaignAgents")
@ResponseBody
public ResultDTO createCustomerList(@RequestBody @Valid CampaignAgentsDTO campaignAgentsDTO) {
ResultDTO result = new ResultDTO();
result = agentsService.createCampaignAgents(campaignAgentsDTO);
return result;
}
}
...@@ -3,6 +3,7 @@ package com.viettel.campaign.web.rest; ...@@ -3,6 +3,7 @@ package com.viettel.campaign.web.rest;
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 com.viettel.campaign.service.CampaignCompleteCodeService; import com.viettel.campaign.service.CampaignCompleteCodeService;
import com.viettel.campaign.web.dto.request_dto.CampaignCompleteCodeRequestDTO;
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;
...@@ -24,8 +25,8 @@ public class CampaignCompleteCodeController { ...@@ -24,8 +25,8 @@ public class CampaignCompleteCodeController {
@GetMapping("/findAll") @GetMapping("/findAll")
@ResponseBody @ResponseBody
public ResponseEntity findAllCompleteCode(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort) { public ResponseEntity findAllCompleteCode(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort,@RequestParam("companySiteId") Long companySiteId) {
Map result = completeCodeService.listAllCompleteCode(page, pageSize, sort); ResultDTO result = completeCodeService.listAllCompleteCode(page, pageSize, sort,companySiteId);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
...@@ -57,7 +58,8 @@ public class CampaignCompleteCodeController { ...@@ -57,7 +58,8 @@ public class CampaignCompleteCodeController {
@PostMapping("/update") @PostMapping("/update")
@ResponseBody @ResponseBody
public ResultDTO updateCompleteCode(@RequestBody @Valid CampaignCompleteCodeDTO completeCodeDTO) { public ResultDTO updateCompleteCode(@RequestBody @Valid CampaignCompleteCodeDTO completeCodeDTO
) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
try { try {
result = completeCodeService.updateCompleteCode(completeCodeDTO); result = completeCodeService.updateCompleteCode(completeCodeDTO);
...@@ -69,20 +71,34 @@ public class CampaignCompleteCodeController { ...@@ -69,20 +71,34 @@ public class CampaignCompleteCodeController {
} }
return result; return result;
} }
@GetMapping("/edit")
@ResponseBody
public ResultDTO findCampaignCodeById(@RequestParam("campaignCompleteCodeId") Long campaignCompleteCodeId){
ResultDTO resultDTO = new ResultDTO();
try{
resultDTO = completeCodeService.editCampaignCompleteCode(campaignCompleteCodeId);
}catch (Exception e){
resultDTO.setErrorCode("-1");
LOGGER.error(e);
}
return resultDTO;
}
@PostMapping("/delete") @PostMapping("/delete")
@ResponseBody @ResponseBody
public ResultDTO deleteCompleteCode(@RequestBody @Valid CampaignCompleteCodeDTO completeCodeDTO) { public ResultDTO deleteCompleteCode(@RequestBody @Valid CampaignCompleteCodeRequestDTO campaignCompleteCodeRequestDTO) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
result = completeCodeService.deleteCompleteCode(completeCodeDTO); result = completeCodeService.deleteCompleteCode(campaignCompleteCodeRequestDTO);
return result; return result;
} }
@PostMapping("/listDelete") @PostMapping("/listDelete")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> deleteList(@RequestBody @Valid List<Long>completeCodeDtos ){ public ResponseEntity<ResultDTO> deleteLists(@RequestBody @Valid CampaignCompleteCodeRequestDTO campaignCompleteCodeRequestDTO){
ResultDTO resultDTO = completeCodeService.deleteList(completeCodeDtos); ResultDTO resultDTO = completeCodeService.deleteList(campaignCompleteCodeRequestDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK); return new ResponseEntity<>(resultDTO, HttpStatus.OK);
} }
@PostMapping("/deleteById") @PostMapping("/deleteById")
@ResponseBody @ResponseBody
public ResultDTO deleteById(@RequestParam("id") Long id){ public ResultDTO deleteById(@RequestParam("id") Long id){
......
...@@ -2,8 +2,6 @@ package com.viettel.campaign.web.rest; ...@@ -2,8 +2,6 @@ package com.viettel.campaign.web.rest;
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.repository.ccms_full.TimeRangeDialModeRepository;
import com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository;
import com.viettel.campaign.service.CampaignExecuteService; import com.viettel.campaign.service.CampaignExecuteService;
import com.viettel.campaign.service.CampaignService; import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.web.dto.CampaignDTO; import com.viettel.campaign.web.dto.CampaignDTO;
...@@ -13,6 +11,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; ...@@ -13,6 +11,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.instrument.reactor.ReactorSleuth;
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.MediaType;
...@@ -40,16 +39,24 @@ public class CampaignController { ...@@ -40,16 +39,24 @@ public class CampaignController {
@Autowired @Autowired
CampaignExecuteService campaignExecuteService; CampaignExecuteService campaignExecuteService;
@Autowired
TimeRangeDialModeRepository timeRangeDialModeRepository;
@Autowired
TimeZoneDialModeRepository timeZoneDialModeRepository;
@PostMapping("/searchCampaignExecute") @PostMapping("/searchCampaignExecute")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> searchCampaignExecute(@RequestBody CampaignRequestDTO requestDto) { public ResponseEntity<ResultDTO> searchCampaignExecute(@RequestBody CampaignRequestDTO requestDto) {
ResultDTO result = campaignService.searchCampaignExecute(requestDto); ResultDTO result = campaignExecuteService.searchCampaignExecute(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/getExecuteCampaign")
@ResponseBody
public ResponseEntity<ResultDTO> getExecuteCampaign(@RequestBody CampaignRequestDTO requestDto) {
ResultDTO result = campaignExecuteService.getExecuteCampaign(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/getCall")
@ResponseBody
public ResponseEntity<ResultDTO> getCall(@RequestBody CampaignRequestDTO requestDto) {
ResultDTO result = campaignExecuteService.getCall(requestDto);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
...@@ -83,6 +90,20 @@ public class CampaignController { ...@@ -83,6 +90,20 @@ public class CampaignController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@GetMapping("/findCampaignTimeRangeMode")
@ResponseBody
public ResponseEntity<?> findCampaignTimeRangeMode(@RequestParam("campaignId") Long campaignId, @RequestParam("companySiteId") Long companySiteId) {
List<TimeRangeDialMode> list = campaignService.getCampaignTimeRangeMode(campaignId, companySiteId);
return new ResponseEntity<>(list, HttpStatus.OK);
}
@GetMapping("/findCampaignTimeZoneMode")
@ResponseBody
public ResponseEntity<?> findCampaignTimeZoneMode(@RequestParam("campaignId") Long campaignId, @RequestParam("companySiteId") Long companySiteId) {
List<TimeZoneDialMode> list = campaignService.getCampaignTimeZoneMode(campaignId, companySiteId);
return new ResponseEntity<>(list, HttpStatus.OK);
}
@PostMapping("/searchInteractiveResult") @PostMapping("/searchInteractiveResult")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> searchInteractiveResult(@RequestBody CampaignRequestDTO dto) throws Exception { public ResponseEntity<ResultDTO> searchInteractiveResult(@RequestBody CampaignRequestDTO dto) throws Exception {
...@@ -165,14 +186,10 @@ public class CampaignController { ...@@ -165,14 +186,10 @@ public class CampaignController {
return new ResponseEntity<byte[]>(contentReturn, headers, HttpStatus.OK); return new ResponseEntity<byte[]>(contentReturn, headers, HttpStatus.OK);
} }
@RequestMapping(value = "/findCampaignTimeRangeMode", method = RequestMethod.GET) @PostMapping("/updateCampaign")
public List<TimeRangeDialMode> findCampaignTimeRangeMode(@RequestParam Long campaignId, @RequestParam Long companySiteId) { @ResponseBody
return timeRangeDialModeRepository.findTimeRangeDialModeByCampaignIdAndCompanySiteId(campaignId, companySiteId); public ResponseEntity<?> updateCampaign(@RequestBody CampaignDTO dto) {
} ResultDTO resultDTO = campaignService.updateCampaign(dto);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
@RequestMapping(value = "/findCampaignTimeZoneMode", method = RequestMethod.GET)
public List<TimeZoneDialMode> findCampaignTimeZoneMode(@RequestParam Long campaignId, @RequestParam Long companySiteId) {
return timeZoneDialModeRepository.findTimeZoneDialModeByCampaignIdAndCompanySiteId(campaignId, companySiteId);
} }
} }
...@@ -9,7 +9,6 @@ import org.apache.poi.xssf.usermodel.XSSFRow; ...@@ -9,7 +9,6 @@ import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
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.MediaType;
...@@ -177,18 +176,20 @@ public class CustomerController { ...@@ -177,18 +176,20 @@ public class CustomerController {
return new ResponseEntity(result, HttpStatus.OK); return new ResponseEntity(result, HttpStatus.OK);
} }
@GetMapping("/getCustomerRecall") @PostMapping("/getCustomerRecall")
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> getCustomerRecall(@RequestParam("campaignId") Long campaignId, @RequestParam("customerId") Long customerId) { public ResponseEntity<ResultDTO> getCustomerRecall(@RequestParam("campaignId") Long campaignId, @RequestParam("customerId") Long customerId) {
ResultDTO result = customerService.getCustomerRecall(campaignId, customerId); ResultDTO result = customerService.getCustomerRecall(campaignId, customerId);
return new ResponseEntity(result, HttpStatus.OK); return new ResponseEntity(result, HttpStatus.OK);
} }
//<editor-fold desc="Download and import excel" defaultState="collapsed">
@GetMapping(value = "/downloadFileTemplate") @GetMapping(value = "/downloadFileTemplate")
public ResponseEntity<byte[]> downloadFileTemplate() { public ResponseEntity<byte[]> downloadFileTemplate(@RequestParam("companySiteId") Long companySiteId) {
LOGGER.debug("--------DOWNLOAD FILE TEMPLATE---------"); LOGGER.debug("--------DOWNLOAD FILE TEMPLATE---------");
try { try {
File file = ResourceUtils.getFile("classpath:templates/test_download.xlsx"); customerService.buildTemplate(companySiteId);
File file = ResourceUtils.getFile("classpath:templates/import_customer_template.xlsx");
byte[] content = Files.readAllBytes(file.toPath()); byte[] content = Files.readAllBytes(file.toPath());
return ResponseEntity.ok() return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName()) .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName())
...@@ -239,16 +240,23 @@ public class CustomerController { ...@@ -239,16 +240,23 @@ public class CustomerController {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST); return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} }
} }
//</editor-fold>
@PostMapping("/getCustomerListInfo") @PostMapping("/getCustomerListInfo")
public ResponseEntity<?> getCustomerListInfo(@RequestBody CampaignCustomerDTO campaignCustomerDTO) { public ResponseEntity<?> getCustomerListInfo(@RequestBody CampaignCustomerDTO dto) {
List<CustomerListDTO> data = customerService.getCustomerListInfo(campaignCustomerDTO); List<CustomerListDTO> customers = customerService.getCustomerListInfo(dto);
return new ResponseEntity<>(data, HttpStatus.OK); return new ResponseEntity<>(customers, HttpStatus.OK);
} }
@PostMapping("/getIndividualCustomerInfo") @PostMapping("/getIndividualCustomerInfo")
public ResponseEntity<?> getIndividualCustomerInfo(@RequestBody CampaignCustomerDTO dto) { public ResponseEntity<?> getIndividualCustomerInfo(@RequestBody CampaignCustomerDTO dto) {
List<CustomerDTO> data = customerService.getIndividualCustomerInfo(dto); List<CustomerDTO> customers = customerService.getIndividualCustomerInfo(dto);
return new ResponseEntity<>(customers, HttpStatus.OK);
}
@PostMapping("/getCustomizeField")
public ResponseEntity<?> getCustomizeField(@RequestBody Long customerId) {
List<CustomizeFieldDTO> data = customerService.getCustomizeField(customerId);
return new ResponseEntity<>(data, HttpStatus.OK); return new ResponseEntity<>(data, HttpStatus.OK);
} }
} }
package com.viettel.campaign.web.rest;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author anhvd_itsol
*/
@RestController
@RequestMapping("/ipcc/campaign/scenario-answer")
@CrossOrigin
public class ScenarioAnswerController {
}
package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.service.ScenarioService;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* @author anhvd_itsol
*/
@RestController
@RequestMapping("/ipcc/campaign/scenario")
@CrossOrigin
public class ScenarioController {
private static final Logger logger = LoggerFactory.getLogger(ScenarioController.class);
@Autowired
ScenarioService scenarioService;
@RequestMapping(value="/findOneByCampaignIdAndCompanyId", method = RequestMethod.GET)
Scenario findOneByCampaignIdAndCompanyId(@RequestParam Long campaignId, @RequestParam Long companySiteId) {
return scenarioService.findScenarioByCampaignIdAndCompanySiteId(campaignId, companySiteId);
}
@RequestMapping(method = RequestMethod.PUT)
ResponseEntity<ResultDTO> update(@RequestBody ScenarioDTO scenario) {
ResultDTO resultDTO = scenarioService.update(scenario);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
}
package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.ScenarioQuestionService;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioQuestionDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* @author anhvd_itsol
*/
@RestController
@RequestMapping("/ipcc/campaign/scenario-question")
@CrossOrigin
public class ScenarioQuestionController {
@Autowired
ScenarioQuestionService scenarioQuestionService;
@RequestMapping(value = "/find-by-scenarioId-campaignId-companySiteId", method = RequestMethod.GET)
public ResponseEntity<ResultDTO> findByScenarioIdAndCampaignIdAndCompanySiteId(Long scenarioId, Long campaignId, Long companySiteId){
ResultDTO resultDTO = scenarioQuestionService.findByScenarioIdAndCampaignIdAndCompanySiteId(scenarioId, campaignId, companySiteId);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<ResultDTO> add(ScenarioQuestionDTO scenarioQuestionDTO) {
ResultDTO resultDTO = scenarioQuestionService.add(scenarioQuestionDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
}
select CUSTOMIZE_FIELD_ID customizeFieldId,
SITE_ID companySiteId,
FUNCTION_CODE functionCode,
CREATE_BY createBy,
CREATE_DATE createDate,
UPDATE_BY updateBy,
UPDATE_DATE updateDate,
STATUS status,
TYPE type,
TITLE title,
PLACEHOLDER placeholder,
DESCRIPTION description,
POSITION position,
REQUIRED required,
FIELD_OPTIONS_ID fieldOptionsId,
REGEXP_FOR_VALIDATION regexpForValidation,
MAX_LENGTH maxLength,
MIN min,
MAX max,
MIN_LENGTH minLength,
ACTIVE active
from customize_fields
where function_code = 'CUSTOMER'
and site_id = :p_company_site_id
\ No newline at end of file
select PAR_VALUE apParamId, select PAR_VALUE apParamId,
PAR_NAME parName PAR_NAME parName
from AP_PARAM from AP_PARAM
where PAR_TYPE = 'CAMPAIGN_TYPE' and COMPANY_SITE_ID = :p_company_site_id where PAR_TYPE = 'CAMPAIGN_TYPE'
and COMPANY_SITE_ID = :p_company_site_id
and IS_DELETE = 0
select COMPLETE_VALUE apParamId, select distinct COMPLETE_VALUE apParamId,
COMPLETE_NAME parName COMPLETE_NAME parName
from CAMPAIGN_COMPLETE_CODE from CAMPAIGN_COMPLETE_CODE
where to_char(COMPLETE_TYPE) = :p_complete_type and STATUS = 1 and COMPANY_SITE_ID = :p_company_site_id where to_char(COMPLETE_TYPE) = :p_complete_type and STATUS = 1 and COMPANY_SITE_ID = :p_company_site_id
...@@ -3,11 +3,12 @@ select b.campaign_code campaignCode, ...@@ -3,11 +3,12 @@ select b.campaign_code campaignCode,
c.user_name userName, c.user_name userName,
a.phone_number phoneNumber, a.phone_number phoneNumber,
d.name customerName, d.name customerName,
a.create_time createTime, to_date(a.start_call, 'DD/MM/YYYY') startCall,
e.complete_name contactStatus, e.complete_name contactStatus,
f.complete_name surveyStatus, f.complete_name surveyStatus,
g.status status, g.status status,
a.status recordStatus a.status recordStatus,
(a.end_time - a.start_call)*24*60 callTime
from contact_cust_result a from contact_cust_result 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 vsa_users c on a.agent_id = c.user_id left join vsa_users c on a.agent_id = c.user_id
......
SELECT
a.USER_ID userId,
a.USER_NAME userName,
a.STATUS status,
a.FULL_NAME fullName,
a.USER_TYPE_ID userTypeId,
a.CREATE_DATE createDate,
a.DESCRIPTION description,
a.STAFF_CODE staffCode,
a.MANAGER_ID managerId,
a.LOCATION_ID locationId,
a.DEPT_ID deptId,
a.DEPT_LEVEL deptLevel,
a.POS_ID posId,
a.DEPT_NAME deptName,
a.GROUP_ID groupId,
a.SITE_ID siteId,
a.COMPANY_SITE_ID companySiteId,
a.AGENT_TYPE agentType,
a.MOBILE_NUMBER mobileNumber,
a.FACEBOOK_ID facebookId,
a.LOGIN_TYPE loginType,
a.GOOGLE_ID googleId,
a.EMAIL email,
a.AVAILABLE_TICKET availableTicket,
a.USER_KAZOO_ID userKazooId,
b.FILTER_TYPE filterType
FROM VSA_USERS a
-- LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID
-- WHERE 1 = 1
-- AND a.COMPANY_SITE_ID = :p_company_site_id
...@@ -21,5 +21,45 @@ from CUSTOMER_LIST_MAPPING a ...@@ -21,5 +21,45 @@ from CUSTOMER_LIST_MAPPING a
left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL
FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID
where 1 = 1 where 1 = 1
and COMPANY_SITE_ID = :p_company_site_id and a.COMPANY_SITE_ID = :p_company_site_id
and CUSTOMER_LIST_ID = :p_customer_list_id and a.CUSTOMER_LIST_ID = :p_customer_list_id
-- test dynamic field
-- select
-- a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,
-- a.COMPANY_SITE_ID companySiteId,
-- a.CUSTOMER_LIST_ID customerListId,
-- a.CUSTOMER_ID customerId,
-- b.NAME name,
-- b.DESCRIPTION description,
-- b.COMPANY_NAME companyName,
-- b.CUSTOMER_TYPE customerType,
-- b.CURRENT_ADDRESS currentAddress,
-- b.CALL_ALLOWED callAllowed,
-- b.EMAIL_ALLOWED emailAllowed,
-- b.SMS_ALLOWED smsAllowed,
-- b.IPCC_STATUS ipccStatus,
-- c.MOBILE mobileNumber,
-- d.EMAIL email,
-- e.TITLE title,
-- f.TYPE type,
-- h.VALUE_COMBOBOX valueCombobox,
-- e.VALUE_CHECKBOX valueCheckbox,
-- e.VALUE_DATE valueDate,
-- e.VALUE_NUMBER valueNumber,
-- e.VALUE_TEXT valueText
-- from CUSTOMER_LIST_MAPPING a
-- join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID
-- left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE
-- FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID
-- left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL
-- FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID
-- left join CUSTOMIZE_FIELD_OBJECT e on b.CUSTOMER_ID = e.OBJECT_ID
-- left join CUSTOMIZE_FIELDS f on e.CUSTOMIZE_FIELDS_ID = f.CUSTOMIZE_FIELD_ID
-- left join (SELECT FIELD_OPTION_VALUE_ID, NAME AS VALUE_COMBOBOX
-- FROM CUSTOMIZE_FIELD_OPTION_VALUE) h on h.FIELD_OPTION_VALUE_ID = e.FIELD_OPTION_VALUE_ID
-- where 1 = 1
-- and a.COMPANY_SITE_ID = :p_company_site_id
-- and a.CUSTOMER_LIST_ID = :p_customer_list_id
-- and e.FUNCTION_CODE = 'CUSTOMER'
select CUSTOMIZE_FIELD_OBJECT_ID customizeFieldObjectId,
OBJECT_ID objectId,
CUSTOMIZE_FIELDS_ID customizeFieldId,
VALUE_TEXT valueText,
VALUE_NUMBER valueNumber,
VALUE_DATE valueDate,
VALUE_CHECKBOX valueCheckbox,
CREATE_BY createBy,
CREATE_DATE createDate,
UPDATE_BY updateBy,
UPDATE_DATE updateDate,
STATUS status,
FIELD_OPTION_VALUE_ID fieldOptionValueId,
TITLE title,
FUNCTION_CODE functionCode
from customize_field_object
where function_code = 'CUSTOMER' and object_id = :p_customer_id
\ No newline at end of file
...@@ -11,7 +11,8 @@ from customer_contact cc ...@@ -11,7 +11,8 @@ from customer_contact cc
where cc.contact_type = 2 where cc.contact_type = 2
and status = 1 and status = 1
), datas as ( ), datas as (
select c.name, select c.customer_id customerId,
c.name,
cP.phone, cP.phone,
cE.email, cE.email,
c.customer_type cusType, c.customer_type cusType,
......
SELECT
CAMPAIGN_COMPLETE_CODE_ID campaignCompleteCodeId,
IS_RECALL isRecall ,
CAMPAIGN_ID campaignId,
COMPLETE_VALUE completeValue,
COMPLETE_NAME completeName,
COMPLETE_TYPE completeType,
CAMPAIGN_TYPE campaignType,
DESCRIPTION description,
STATUS status,
COMPANY_SITE_ID companySiteId,
UPDATE_BY updateBy ,
UPDATE_AT updateAt,
CREATE_BY createBy,
CREATE_AT createAt,
IS_FINISH isFinish,
IS_LOCK isLock,
DURATION_LOCK durationLock,
CHANEL chanel
FROM CAMPAIGN_COMPLETE_CODE
where 1 = 1
AND STATUS = 1
and COMPANY_SITE_ID = :p_company_site_id
SELECT CAMPAIGN_COMPLETE_CODE_ID campaignCompleteCodeId,
IS_RECALL isRecall ,
CAMPAIGN_ID campaignId,
COMPLETE_VALUE completeValue,
COMPLETE_NAME completeName,
COMPLETE_TYPE completeType,
CAMPAIGN_TYPE campaignType,
DESCRIPTION description,
STATUS status,
COMPANY_SITE_ID companySiteId,
UPDATE_BY updateBy ,
UPDATE_AT updateAt,
CREATE_BY createBy,
CREATE_AT createAt,
IS_FINISH isFinish,
IS_LOCK isLock,
DURATION_LOCK durationLock,
CHANEL chanel
from CAMPAIGN_COMPLETE_CODE WHERE CAMPAIGN_COMPLETE_CODE_ID=:p_campaignComleteCode
SELECT max(COMPLETE_VALUE) completeValue, COMPANY_SITE_ID companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id GROUP BY COMPANY_SITE_ID SELECT max(to_number(COMPLETE_VALUE)) completeValue, COMPANY_SITE_ID companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id GROUP BY COMPANY_SITE_ID
...@@ -17,3 +17,4 @@ LEFT JOIN AP_PARAM c ON a.CAMPAIGN_TYPE = to_char(c.AP_PARAM_ID); ...@@ -17,3 +17,4 @@ LEFT JOIN AP_PARAM c ON a.CAMPAIGN_TYPE = to_char(c.AP_PARAM_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