Commit 67413408 authored by Tu Bach's avatar Tu Bach

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

# Conflicts:
#	src/main/java/com/viettel/campaign/repository/CampaignRepository.java
#	src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
#	src/main/java/com/viettel/campaign/service/impl/CustomerServiceImpl.java
#	src/main/java/com/viettel/campaign/web/rest/controller/CampaignController.java
parents 5e4b9b45 55a6b806
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
<facet type="web" name="Web">
<configuration>
<webroots />
<sourceRoots>
<root url="file://$MODULE_DIR$/src/main/java" />
<root url="file://$MODULE_DIR$/src/main/resources" />
</sourceRoots>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$USER_HOME$/Downloads/ojdbc6-11.2.0.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: org.modelmapper:modelmapper:2.3.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator-autoconfigure:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.7" level="project" />
<orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.0.7" level="project" />
<orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.10" level="project" />
<orderEntry type="library" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.13" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-batch:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.9" level="project" />
<orderEntry type="library" name="Maven: org.springframework.batch:spring-batch-core:4.0.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: javax.batch:javax.batch-api:1.0" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.batch:spring-batch-infrastructure:4.0.1.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-jpa:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:2.0.11.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.0.11.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-orm:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aspects:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.0.11.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.0.11.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.0.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.1.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.29.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.29.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.29.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.29.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.29.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.29.Final" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-security:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-config:5.0.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-web:5.0.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.34" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.13.Final" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.7" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.7" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.34" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.34" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-sleuth:2.0.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.0.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.0.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.0.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.0.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.60" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.60" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-sleuth-core:2.0.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.8.13" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.zipkin2:zipkin:2.11.7" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.reporter2:zipkin-reporter:2.7.10" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-context-log4j2:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-instrumentation-spring-web:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-instrumentation-http:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-instrumentation-spring-rabbit:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-instrumentation-kafka-clients:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-instrumentation-httpclient:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-instrumentation-httpasyncclient:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-instrumentation-spring-webmvc:5.4.3" level="project" />
<orderEntry type="library" name="Maven: io.zipkin.brave:brave-instrumentation-servlet:5.4.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web-services:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.ws:spring-ws-core:3.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.ws:spring-xml:3.0.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.kafka:kafka-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.kafka:kafka-clients:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.lz4:lz4-java:1.4" level="project" />
<orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.kafka:connect-json:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.kafka:connect-api:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.rocksdb:rocksdbjni:5.7.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.kafka:spring-kafka:2.1.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.2.2.RELEASE" level="project" />
<orderEntry type="module-library">
<library name="Maven: com.oracle:ojdbc7:1.0">
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/ojdbc7.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Maven: org.hibernate:hibernate-entitymanager:5.1.0.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
<orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.1.0.Final" level="project" />
<orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
<orderEntry type="library" name="Maven: org.jboss:jandex:2.0.0.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.springframework.boot:spring-boot-devtools:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.6.RELEASE" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.h2database:h2:1.4.197" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.16.22" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.0.6.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.0.6.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.0.6.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.9.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.15.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.7.11" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.7.11" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.0.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.5.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.batch:spring-batch-test:4.0.1.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.kafka:spring-kafka-test:2.1.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apache.kafka:kafka-clients:test:1.0.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apache.kafka:kafka_2.11:1.0.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.sf.jopt-simple:jopt-simple:5.0.4" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.yammer.metrics:metrics-core:2.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.scala-lang:scala-library:2.11.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.101tec:zkclient:0.10" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apache.zookeeper:zookeeper:3.4.10" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apache.kafka:kafka_2.11:test:1.0.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.restdocs:spring-restdocs-mockmvc:2.0.2.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.restdocs:spring-restdocs-core:2.0.2.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.security:spring-security-test:5.0.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:5.0.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.9.9" level="project" />
<orderEntry type="library" name="Maven: org.modelmapper:modelmapper:2.3.2" level="project" />
</component>
</module>
\ No newline at end of file
...@@ -189,6 +189,18 @@ ...@@ -189,6 +189,18 @@
<artifactId>modelmapper</artifactId> <artifactId>modelmapper</artifactId>
<version>2.3.2</version> <version>2.3.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>
......
...@@ -16,6 +16,8 @@ public class Campaign implements Serializable { ...@@ -16,6 +16,8 @@ public class Campaign implements Serializable {
@Id @Id
@NotNull @NotNull
@GeneratedValue(generator = "campaign_seq")
@SequenceGenerator(name = "campaign_seq", sequenceName = "campaign_seq", allocationSize = 1)
@Basic(optional = false) @Basic(optional = false)
@Column(name = "CAMPAIGN_ID") @Column(name = "CAMPAIGN_ID")
private Long campaignId; private Long campaignId;
......
...@@ -18,6 +18,8 @@ import java.util.Date; ...@@ -18,6 +18,8 @@ import java.util.Date;
public class TimeRangeDialMode implements Serializable { public class TimeRangeDialMode implements Serializable {
@Id @Id
@NotNull @NotNull
@GeneratedValue(generator = "TIME_RANGE_DIAL_MODE_SEQ")
@SequenceGenerator(name = "TIME_RANGE_DIAL_MODE_SEQ", sequenceName = "TIME_RANGE_DIAL_MODE_SEQ", allocationSize = 1)
@Basic(optional = false) @Basic(optional = false)
@Column(name = "TIME_RANGE_DIAL_MODE_ID") @Column(name = "TIME_RANGE_DIAL_MODE_ID")
private Long timeRangeDialModeId; private Long timeRangeDialModeId;
......
...@@ -19,9 +19,11 @@ import java.io.Serializable; ...@@ -19,9 +19,11 @@ import java.io.Serializable;
public class TimeZoneDialMode implements Serializable{ public class TimeZoneDialMode implements Serializable{
@Id @Id
@NotNull @NotNull
@GeneratedValue(generator = "TIME_ZONE_DIAL_MODE_SEQ")
@SequenceGenerator(name = "TIME_ZONE_DIAL_MODE_SEQ", sequenceName = "TIME_ZONE_DIAL_MODE_SEQ", allocationSize = 1)
@Basic(optional = false) @Basic(optional = false)
@Column(name = "TIME_ZONE_DIAL_MODE_ID") @Column(name = "TIME_ZONE_DIAL_MODE_ID")
private Long timeRangeDialModeId; private Long timeZoneDialModeId;
@Column(name = "COMPANY_SITE_ID") @Column(name = "COMPANY_SITE_ID")
private Long companySiteId; private Long companySiteId;
......
...@@ -25,3 +25,4 @@ public interface ApParamRepository extends JpaRepository<ApParam, Long>, ApParam ...@@ -25,3 +25,4 @@ public interface ApParamRepository extends JpaRepository<ApParam, Long>, ApParam
List<ApParam> findAllParam(); List<ApParam> findAllParam();
} }
package com.viettel.campaign.repository; package com.viettel.campaign.repository;
import com.viettel.campaign.model.ApParam;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface ApParamRepositoryCustom { public interface ApParamRepositoryCustom {
......
...@@ -12,18 +12,23 @@ import org.springframework.stereotype.Repository; ...@@ -12,18 +12,23 @@ import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@Repository @Repository
public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCompleteCode, Long> { public interface CampaignCompleteCodeRepository extends JpaRepository<CampaignCompleteCode, Long> {
@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);
List<CampaignCompleteCode> findByCompleteNameContains(String name, Pageable pageable); List<CampaignCompleteCode>findByCompleteNameContains(String name, Pageable pageable);
@Modifying @Modifying
@Query("delete from CampaignCompleteCode c where c.campaignCompleteCodeId in (:ids)") @Query("delete from CampaignCompleteCode c where c.campaignCompleteCodeId in (:ids)")
int deleteds(@Param("ids") List<Long> ids); int deleteds(@Param("ids") List<Long> ids);
// @Query(value="SELECT max(completeValue) FROM CampaignCompleteCode WHERE companySiteId = :companySiteId GROUP BY companySiteId")
// Short findByMaxCompanySiteId(Long companySiteId);
List<CampaignCompleteCode> findCampaignCompleteCodesByCompanySiteId(Long companySiteId);
// List<CampaignCompleteCode> findByCampaignIdContainsAndChanel(Long campaignId, String chanel);
} }
...@@ -5,4 +5,6 @@ import com.viettel.campaign.web.dto.ResultDTO; ...@@ -5,4 +5,6 @@ import com.viettel.campaign.web.dto.ResultDTO;
public interface CampaignCompleteCodeRepositoryCustom { public interface CampaignCompleteCodeRepositoryCustom {
ResultDTO updateStatusById(Long id); ResultDTO updateStatusById(Long id);
ResultDTO findMaxValueCampaignType(Long companySiteId);
} }
package com.viettel.campaign.repository;
import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CampaignExecuteRepository {
//<editor-fold: hungtt>
List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType);
List<ApParamDTO> getComboCampaignType(String companySiteId);
ResultDTO getInteractiveResult(CampaignRequestDTO dto);
List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto);
//</editor-fold: hungtt>
}
package com.viettel.campaign.repository; package com.viettel.campaign.repository;
import com.viettel.campaign.model.Campaign; import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO;
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.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
...@@ -18,4 +20,7 @@ public interface CampaignRepository extends JpaRepository<Campaign, Long>, Campa ...@@ -18,4 +20,7 @@ public interface CampaignRepository extends JpaRepository<Campaign, Long>, Campa
Long countRecallCustomer(@Param("pCompanySiteId") Long pCompanySiteId, @Param("pAgentId") Long pAgentId); Long countRecallCustomer(@Param("pCompanySiteId") Long pCompanySiteId, @Param("pAgentId") Long pAgentId);
Campaign findByCampaignId(Long campaignId); Campaign findByCampaignId(Long campaignId);
Campaign findCampaignByCampaignIdAndCompanySiteId(Long campaignId, Long companySiteId);
} }
...@@ -11,4 +11,6 @@ public interface CampaignRepositoryCustom { ...@@ -11,4 +11,6 @@ public interface CampaignRepositoryCustom {
ResultDTO search(CampaignRequestDTO requestDto); ResultDTO search(CampaignRequestDTO requestDto);
ResultDTO findByCampaignCode(CampaignRequestDTO requestDTO); ResultDTO findByCampaignCode(CampaignRequestDTO requestDTO);
String getMaxCampaignIndex();
} }
...@@ -13,20 +13,20 @@ public interface CustomerListMappingRepository extends JpaRepository<CustomerLis ...@@ -13,20 +13,20 @@ public interface CustomerListMappingRepository extends JpaRepository<CustomerLis
// ----------- customer ------------ // // ----------- customer ------------ //
@Modifying @Modifying
@Query("delete from CustomerListMapping c where c.customerId=:p_customer_id and c.customerListId=:p_customer_list_id") @Query("delete from CustomerListMapping c where c.customerId=:p_customer_id and c.customerListId=:p_customer_list_id and c.companySiteId=:p_company_site_id")
int deleteMappingByCustomerId(@Param("p_customer_id") Long p_customer_id, @Param("p_customer_list_id") Long p_customer_list_id); int deleteMappingByCustomerId(@Param("p_customer_id") Long p_customer_id, @Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Modifying @Modifying
@Query("delete from CustomerListMapping c where c.customerId in (:p_id) and c.customerListId =:p_customer_list_id") @Query("delete from CustomerListMapping c where c.customerId in (:p_ids) and c.customerListId =:p_customer_list_id and c.companySiteId=:p_company_site_id")
int deleteMappingByCustomerIds(@Param("p_id") List<Long> p_id, @Param("p_customer_list_id") Long p_customer_list_id); int deleteMappingByCustomerIds(@Param("p_ids") List<Long> p_ids, @Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
// ----------- customer list --------------- // // ----------- customer list --------------- //
@Modifying @Modifying
@Query("delete from CustomerListMapping c where c.customerListId=:p_customerListId") @Query("delete from CustomerListMapping c where c.customerListId=:p_customer_list_id and c.companySiteId=:p_company_site_id")
int deleteMappingByCustomerListId(@Param("p_customerListId") Long p_customerListId); int deleteMappingByCustomerListId(@Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Modifying @Modifying
@Query("delete from CustomerListMapping c where c.customerListId in (:p_ids)") @Query("delete from CustomerListMapping c where c.customerListId in (:p_ids) and c.companySiteId=:p_company_site_id")
int deleteMappingByCustomerListIds(@Param("p_ids") List<Long> p_ids); int deleteMappingByCustomerListIds(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id);
} }
...@@ -10,15 +10,15 @@ import java.util.List; ...@@ -10,15 +10,15 @@ import java.util.List;
public interface CustomerListRepository extends JpaRepository<CustomerList, Long> { public interface CustomerListRepository extends JpaRepository<CustomerList, Long> {
CustomerList findCustomerListByCustomerListId(long customerListId); CustomerList findByCustomerListIdAndCompanySiteId(long customerListId, long companySiteId);
CustomerList findByCustomerListCode(String customerListCode); CustomerList findByCustomerListCode(String customerListCode);
@Modifying @Modifying
@Query("update CustomerList c set c.status = 0 where c.customerListId=:p_customerListId") @Query("update CustomerList c set c.status = 0 where c.customerListId=:p_customer_list_id and c.companySiteId=:p_company_site_id")
int deleteCustomerList(@Param("p_customerListId") Long p_customerListId); int deleteCustomerList(@Param("p_customer_list_id") Long p_customer_list_id, @Param("p_company_site_id") Long p_company_site_id);
@Modifying @Modifying
@Query("update CustomerList c set c.status = 0 where c.customerListId in (:p_ids)") @Query("update CustomerList c set c.status = 0 where c.customerListId in (:p_ids) and c.companySiteId=:p_company_site_id")
int deleteCustomerListIds(@Param("p_ids") List<Long> p_ids); int deleteCustomerListIds(@Param("p_ids") List<Long> p_ids, @Param("p_company_site_id") Long p_company_site_id);
} }
package com.viettel.campaign.repository;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.UserActionLogDTO;
/**
* @author anhvd_itsol
*/
public interface UserActionLogRepositoryCustom {
ResultDTO insertToUserActionLog(UserActionLogDTO userActionLogDTO);
}
package com.viettel.campaign.repository.impl; package com.viettel.campaign.repository.impl;
import com.viettel.campaign.model.ApParam;
import com.viettel.campaign.repository.ApParamRepositoryCustom; import com.viettel.campaign.repository.ApParamRepositoryCustom;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.List;
@Repository @Repository
@Transactional
public class AppParamRepositoryImpl implements ApParamRepositoryCustom { public class AppParamRepositoryImpl implements ApParamRepositoryCustom {
@Autowired
EntityManager entityManager;
public AppParamRepositoryImpl() {
}
} }
package com.viettel.campaign.repository.impl;
import com.viettel.campaign.model.CampaignCompleteCode;
import com.viettel.campaign.repository.CampaignCompleteCodeRepository;
import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.CampaignCompleteCodeDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.hibernate.type.LongType;
import org.hibernate.type.ShortType;
import org.hibernate.type.StringType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import java.util.List;
import java.util.Optional;
public class CampaignCompleteCodeRepositoryIpml implements CampaignCompleteCodeRepository {
@Autowired
EntityManager entityManager;
CampaignCompleteCodeRepository campaignCompleteCodeRepository;
private Logger log = LoggerFactory.getLogger(CampaignCompleteCodeRepositoryIpml.class);
@Override
public Page<CampaignCompleteCode> findAll(Pageable pageable) {
// Page<CampaignCompleteCode>
// try {
//
// } catch (Exception e) {
//
// }
return null;
}
@Override
public List<CampaignCompleteCode> findByName(String name, Pageable pageable) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
List<CampaignCompleteCode> resultList = null;
try {
StringBuilder sql = new StringBuilder(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "search-campaign-status-by-params"));
SQLQuery query = session.createSQLQuery(sql.toString());
query.setParameter(":p_name", name);
// add SCalar
query.addScalar("campaignId", new LongType());
query.addScalar("completeValue", new StringType());
query.addScalar("completeName", new StringType());
query.addScalar("completeType", new StringType());
query.addScalar("chanel", new ShortType());
query.addScalar("description", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("chanel", new LongType());
query.setResultTransformer(Transformers.aliasToBean(CampaignCompleteCodeDTO.class));
resultList = query.list();
} catch (Exception e) {
session.close();
log.error(e.getMessage(), e);
}
return resultList;
}
@Override
public List<CampaignCompleteCode> findByCompleteNameContains(String name, Pageable pageable) {
return campaignCompleteCodeRepository.findByCompleteNameContains(name, pageable);
}
@Override
public int deleteds(List<Long> ids) {
return 0;
}
@Override
public List<CampaignCompleteCode> findAll() {
return campaignCompleteCodeRepository.findAll();
}
@Override
public List<CampaignCompleteCode> findAll(Sort sort) {
return campaignCompleteCodeRepository.findAll();
}
@Override
public List<CampaignCompleteCode> findAllById(Iterable<Long> iterable) {
return null;
}
@Override
public long count() {
return 0;
}
@Override
@Transactional
public void deleteById(Long id) {
ResultDTO result = new ResultDTO();
try {
// update Status = 0 cho cái ID truyền vào
CampaignCompleteCode entity = entityManager.find(CampaignCompleteCode.class, id);
// set giá trị Status = 0 --> tương đương với inactive
entity.setStatus(new Short("0"));
entityManager.merge(entity);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
@Override
public void delete(CampaignCompleteCode campaignCompleteCode) {
}
@Override
public void deleteAll(Iterable<? extends CampaignCompleteCode> iterable) {
}
@Override
public void deleteAll() {
}
@Override
public <S extends CampaignCompleteCode> S save(S s) {
return null;
}
@Override
public <S extends CampaignCompleteCode> List<S> saveAll(Iterable<S> iterable) {
return null;
}
@Override
public Optional<CampaignCompleteCode> findById(Long aLong) {
return Optional.empty();
}
@Override
public boolean existsById(Long aLong) {
return false;
}
@Override
public void flush() {
}
@Override
public <S extends CampaignCompleteCode> S saveAndFlush(S s) {
return null;
}
@Override
public void deleteInBatch(Iterable<CampaignCompleteCode> iterable) {
}
@Override
public void deleteAllInBatch() {
}
@Override
public CampaignCompleteCode getOne(Long aLong) {
return null;
}
@Override
public <S extends CampaignCompleteCode> Optional<S> findOne(Example<S> example) {
return Optional.empty();
}
@Override
public <S extends CampaignCompleteCode> List<S> findAll(Example<S> example) {
return null;
}
@Override
public <S extends CampaignCompleteCode> List<S> findAll(Example<S> example, Sort sort) {
return null;
}
@Override
public <S extends CampaignCompleteCode> Page<S> findAll(Example<S> example, Pageable pageable) {
return null;
}
@Override
public <S extends CampaignCompleteCode> long count(Example<S> example) {
return 0;
}
@Override
public <S extends CampaignCompleteCode> boolean exists(Example<S> example) {
return false;
}
}
...@@ -38,4 +38,19 @@ public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompl ...@@ -38,4 +38,19 @@ public class CampaignCompleteCompleteCodeRepositoryIpml implements CampaignCompl
} }
return dto; return dto;
} }
@Override
@Transactional
public ResultDTO findMaxValueCampaignType(Long companySiteId) {
ResultDTO result = new ResultDTO();
try{
result.setErrorCode("00");
}
catch(Exception e){
log.error(e.getMessage(), e);
result.setErrorCode("01");
result.setDescription(e.getMessage());
}
return null;
}
} }
package com.viettel.campaign.repository.impl;
import com.viettel.campaign.repository.CampaignExecuteRepository;
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.ApParamDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.hibernate.type.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import java.util.*;
import java.util.concurrent.TimeUnit;
@Repository
public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
private static final Logger logger = LoggerFactory.getLogger(CampaignRepositoryImpl.class);
@Autowired
NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
EntityManager entityManager;
@Override
public List<ApParamDTO> getComboBoxStatus(String companySiteId, String completeType) {
List<ApParamDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>();
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-connect-status");
try {
params.put("p_company_site_id", companySiteId);
params.put("p_complete_type", completeType);
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
// list = namedParameterJdbcTemplate.getJdbcTemplate().query(sql, (PreparedStatementSetter) params, BeanPropertyRowMapper.newInstance(ComboBoxDTO.class));
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return list;
}
@Override
public List<ApParamDTO> getComboCampaignType(String companySiteId) {
List<ApParamDTO> list = new ArrayList<>();
Map<String, String> params = new HashMap<>();
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-campaign-type");
try {
params.put("p_company_site_id", companySiteId);
list = namedParameterJdbcTemplate.query(sql, params, BeanPropertyRowMapper.newInstance(ApParamDTO.class));
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return list;
}
@Override
public ResultDTO getInteractiveResult(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO();
List<ContactCustResultDTO> list = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
StringBuilder sqlBuilder = new StringBuilder();
try {
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
sqlBuilder.append(sql);
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sqlBuilder.append(" and upper(campaignName) like upper(:p_campaign_name)");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sqlBuilder.append(" and upper(userName) like upper(:p_user_name)");
}
SQLQuery query = session.createSQLQuery(sqlBuilder.toString());
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(","));
query.setParameter("p_customer_id", dto.getCustomerId());
query.setParameter("p_date_from", dto.getFromDate());
query.setParameter("p_date_to", dto.getToDate());
query.setParameterList("p_list_contact_status", dto.getContactStatus().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().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_to", dto.getCallTimeTo());
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
query.setParameter("p_campaign_name", dto.getCampaignName().trim());
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
query.setParameter("p_user_name", dto.getAgentId().trim());
}
query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new LongType());
query.addScalar("customerName", new StringType());
query.addScalar("createTime", new DateType());
query.addScalar("contactStatus", new StringType());
query.addScalar("surveyStatus", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("recordStatus", new ShortType());
query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class));
int count = 0;
list = query.list();
if (list.size() > 0) {
count = list.size();
}
Pageable pageable = SQLBuilder.buildPageable(dto);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<ContactCustResultDTO> data = query.list();
for (ContactCustResultDTO contactCustResultDTO: data) {
if (!"AGENT".equals(dto.getRoleUser())) {
contactCustResultDTO.setEnableEdit(true);
} else {
if (contactCustResultDTO.getRecordStatus() == 2) {
contactCustResultDTO.setEnableEdit(true);
} else if (contactCustResultDTO.getRecordStatus() == 1 && isLower24Hour(contactCustResultDTO.getCreateTime())){
contactCustResultDTO.setEnableEdit(true);
} else {
contactCustResultDTO.setEnableEdit(false);
}
}
}
Page<ContactCustResultDTO> 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
public List<ContactCustResultDTO> getExcelInteractiveResult(CampaignRequestDTO dto) {
List<ContactCustResultDTO> list = new ArrayList<>();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
StringBuilder sqlBuilder = new StringBuilder();
try {
String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
sqlBuilder.append(sql);
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
sqlBuilder.append(" and upper(campaignName) like upper(:p_campaign_name)");
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
sqlBuilder.append(" and upper(userName) like upper(:p_user_name)");
}
SQLQuery query = session.createSQLQuery(sqlBuilder.toString());
query.setParameterList("p_list_campaign_id", dto.getCampaignId().split(","));
query.setParameter("p_customer_id", dto.getCustomerId());
query.setParameter("p_date_from", dto.getFromDate());
query.setParameter("p_date_to", dto.getToDate());
query.setParameterList("p_list_contact_status", dto.getContactStatus().split(","));
query.setParameterList("p_list_survey_status", dto.getSurveyStatus().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_to", dto.getCallTimeTo());
if (!DataUtil.isNullOrEmpty(dto.getCampaignName())) {
query.setParameter("p_campaign_name", dto.getCampaignName().trim());
}
if (!DataUtil.isNullOrEmpty(dto.getAgentId())) {
query.setParameter("p_user_name", dto.getAgentId().trim());
}
query.addScalar("campaignCode", new StringType());
query.addScalar("campaignName", new StringType());
query.addScalar("userName", new StringType());
query.addScalar("phoneNumber", new LongType());
query.addScalar("customerName", new StringType());
query.addScalar("createTime", new DateType());
query.addScalar("contactStatus", new StringType());
query.addScalar("surveyStatus", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("recordStatus", new ShortType());
query.setResultTransformer(Transformers.aliasToBean(ContactCustResultDTO.class));
list = query.list();
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
session.close();
return list;
}
}
private boolean isLower24Hour(Date createTime) {
Date currTime = new Date();
long diffMilSec = currTime.getTime() - createTime.getTime();
long hour = TimeUnit.MILLISECONDS.toHours(diffMilSec);
if (hour > 24) return false;
return true;
}
}
...@@ -28,6 +28,7 @@ import java.util.List; ...@@ -28,6 +28,7 @@ import java.util.List;
@Repository @Repository
public class CampaignRepositoryImpl implements CampaignRepositoryCustom { public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
private static final Logger logger = LogManager.getLogger(CampaignRepositoryImpl.class); private static final Logger logger = LogManager.getLogger(CampaignRepositoryImpl.class);
@Autowired @Autowired
...@@ -374,9 +375,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -374,9 +375,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
result.setData(dataPage); result.setData(dataPage);
result.setErrorCode(Constants.ApiErrorCode.SUCCESS); result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS); result.setDescription(Constants.ApiErrorDesc.SUCCESS);
session.close();
return result;
} catch (Exception ex) { } catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
result.setErrorCode(Constants.ApiErrorCode.ERROR); result.setErrorCode(Constants.ApiErrorCode.ERROR);
...@@ -387,4 +386,25 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -387,4 +386,25 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return result; return result;
} }
@Override
public String getMaxCampaignIndex() {
logger.info("Start search max campaign code index::");
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
try {
StringBuilder sqlStr = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-max-campaign-code-index"));
SQLQuery query = session.createSQLQuery(sqlStr.toString());
List<String> list = query.list();
if(list.size() > 0) {
return list.get(0);
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return null;
}
} }
package com.viettel.campaign.repository.impl;
import com.viettel.campaign.repository.UserActionLogRepositoryCustom;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.UserActionLogDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
/**
* @author anhvd_itsol
*/
@Repository
@Transactional
public class UserActionLogRepositoryImpl implements UserActionLogRepositoryCustom {
private static final Logger logger = LogManager.getLogger(CampaignRepositoryImpl.class);
@Override
public ResultDTO insertToUserActionLog(UserActionLogDTO userActionLogDTO) {
logger.info("Start search campaign::");
ResultDTO result = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
try{
StringBuilder sqlStr = new StringBuilder();
sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "insert-to-user-action-log"));
SQLQuery query = session.createSQLQuery(sqlStr.toString());
query.setParameter("par_agentId", userActionLogDTO.getAgentId() == null ? "" : userActionLogDTO.getAgentId());
query.setParameter("par_companySiteId", userActionLogDTO.getCompanySiteId());
query.setParameter("par_sessionId", userActionLogDTO.getSessionId());
query.setParameter("par_startTime", userActionLogDTO.getStartTime());
query.setParameter("par_actionType", userActionLogDTO.getActionType());
query.setParameter("par_objectId", userActionLogDTO.getObjectId());
query.executeUpdate();
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
}catch (Exception ex) {
logger.error(ex.getMessage(), ex);
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(Constants.ApiErrorDesc.ERROR);
}finally {
session.close();
}
return result;
}
}
...@@ -17,4 +17,6 @@ public interface ApParamService { ...@@ -17,4 +17,6 @@ public interface ApParamService {
ResultDTO findParamByParType(String parType); ResultDTO findParamByParType(String parType);
List<ApParam>findAllParam(); List<ApParam>findAllParam();
} }
...@@ -22,4 +22,6 @@ public interface CampaignCompleteCodeService { ...@@ -22,4 +22,6 @@ public interface CampaignCompleteCodeService {
ResultDTO deleteById(Long id); ResultDTO deleteById(Long id);
ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO);
} }
package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
@Service
public interface CampaignExecuteService {
//<editor-fold: hungtt>
ResultDTO getComboBoxStatus(String companySiteId, String completeType);
ResultDTO getComboCampaignType(String companySiteId);
ResultDTO searchInteractiveResult(CampaignRequestDTO dto);
XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto);
//</editor-fold>
}
...@@ -18,4 +18,8 @@ public interface CampaignService { ...@@ -18,4 +18,8 @@ public interface CampaignService {
ResultDTO addNewCampaign(CampaignDTO campaignDTO); ResultDTO addNewCampaign(CampaignDTO campaignDTO);
Map countRecallCustomer(Long companySiteId, Long agentId); Map countRecallCustomer(Long companySiteId, Long agentId);
ResultDTO findCampaignById(Long campaignId);
ResultDTO changeCampaignStatus(CampaignDTO dto);
} }
...@@ -4,30 +4,26 @@ import com.viettel.campaign.web.dto.CustomerContactDTO; ...@@ -4,30 +4,26 @@ import com.viettel.campaign.web.dto.CustomerContactDTO;
import com.viettel.campaign.web.dto.CustomerDTO; import com.viettel.campaign.web.dto.CustomerDTO;
import com.viettel.campaign.web.dto.CustomerListDTO; import com.viettel.campaign.web.dto.CustomerListDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.DeleteCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface CustomerService { public interface CustomerService {
Map listAllCustomer(int page, int pageSize, String sort); ResultDTO getAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId);
ResultDTO getCustomerId(Long customerId); ResultDTO getCustomerId(Long customerId);
Map listCustByName(int page, int pageSize, String sort, String name); ResultDTO searchAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId, String name, String mobileNumber, String email);
ResultDTO createCustomer(CustomerDTO customerDTO); ResultDTO createCustomer(CustomerDTO customerDTO);
ResultDTO deleteCustomer(DeleteCustomerRequestDTO deleteCustomerRequestDTO); ResultDTO deleteCustomer(CustomerRequestDTO customerRequestDTO);
ResultDTO deleteIds(DeleteCustomerRequestDTO deleteCustomerRequestDTO); ResultDTO deleteIds(CustomerRequestDTO customerRequestDTO);
// ------------ customer list ------------ // // ------------ customer list ------------ //
Map getCustomerList(int page, int pageSize, String sort); ResultDTO getAllCustomerList(int page, int pageSize, String sort, Long companySiteId);
ResultDTO createCustomerList(CustomerListDTO customerListDTO); ResultDTO createCustomerList(CustomerListDTO customerListDTO);
...@@ -35,9 +31,9 @@ public interface CustomerService { ...@@ -35,9 +31,9 @@ public interface CustomerService {
ResultDTO deleteCustomerList(CustomerListDTO customerListDTO); ResultDTO deleteCustomerList(CustomerListDTO customerListDTO);
ResultDTO deleteCustomerListIds(List<Long> ids); ResultDTO deleteCustomerListIds(CustomerRequestDTO customerRequestDTO);
ResultDTO searchCustomerList(CampaignCustomerRequestDTO campaignCustomerRequestDTO); ResultDTO searchCustomerList(SearchCustomerRequestDTO searchCustomerRequestDTO);
// ------------ customer contact ------------ // // ------------ customer contact ------------ //
......
package com.viettel.campaign.service;
/**
* @author anhvd_itsol
*/
public interface UserActionLogService {
}
...@@ -25,8 +25,6 @@ public class ApParamServiceImpl implements ApParamService { ...@@ -25,8 +25,6 @@ public class ApParamServiceImpl implements ApParamService {
private static final Logger logger = LogManager.getLogger(ApParamServiceImpl.class); private static final Logger logger = LogManager.getLogger(ApParamServiceImpl.class);
@Override @Override
public Iterable<ApParam> getAllParams(int page, int pageSize, String sort) { public Iterable<ApParam> getAllParams(int page, int pageSize, String sort) {
return apParamRepository.findAll(PageRequest.of(page, pageSize, Sort.by(sort))); return apParamRepository.findAll(PageRequest.of(page, pageSize, Sort.by(sort)));
......
...@@ -7,8 +7,12 @@ import com.viettel.campaign.web.dto.ResultDTO; ...@@ -7,8 +7,12 @@ import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.mapper.CampaignCompleteCodeMapper; import com.viettel.campaign.mapper.CampaignCompleteCodeMapper;
import com.viettel.campaign.model.CampaignCompleteCode; import com.viettel.campaign.model.CampaignCompleteCode;
import com.viettel.campaign.repository.CampaignCompleteCodeRepository; import com.viettel.campaign.repository.CampaignCompleteCodeRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
...@@ -20,6 +24,8 @@ import java.util.*; ...@@ -20,6 +24,8 @@ import java.util.*;
@Service @Service
public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeService { public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeService {
protected Logger logger = LoggerFactory.getLogger(CampaignCompleteCodeServiceImpl.class);
@Autowired @Autowired
CampaignCompleteCodeRepository completeCodeRepository; CampaignCompleteCodeRepository completeCodeRepository;
...@@ -123,12 +129,11 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -123,12 +129,11 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
return resultDTO; return resultDTO;
} }
@Transactional @Transactional
@Override @Override
public ResultDTO deleteList(List<Long> completeCodeDtos) { public ResultDTO deleteList(List<Long> completeCodeDtos) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
// for (int i = 0; i < completeCodeDtos.size(); i++) {
try { try {
completeCodeRepository.deleteds(completeCodeDtos); completeCodeRepository.deleteds(completeCodeDtos);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
...@@ -160,4 +165,52 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ ...@@ -160,4 +165,52 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
result.setErrorCode("0"); result.setErrorCode("0");
return result; return result;
} }
@Override
public ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) {
ResultDTO resultDTO = new ResultDTO();
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+= 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());
}
return resultDTO;
}
// @Override
// public ResultDTO findMaxValueCampaignCompleteCode(CampaignCompleteCodeDTO completeCodeDTO) {
// ResultDTO result = new ResultDTO();
// CampaignCompleteCodeMapper campaignCompleteCodeMapper = new CampaignCompleteCodeMapper();
// CampaignCompleteCode campaignCompleteCode = new CampaignCompleteCode();
// try{
// short resultmaxValue = completeCodeRepository.findByMaxCompanySiteId(completeCodeDTO.getCompanySiteId());
// campaignCompleteCode.setCompleteValue(String.valueOf(resultmaxValue + 1));
//// if (resultmaxValue < 4) {
//// resultmaxValue =4;
//// }
// result.setData(resultmaxValue);
// result.setErrorCode(Constants.Status.ACTIVE_STR);
// result.setDescription(Constants.Status.ACTIVE_STR);
// }
// catch (Exception e){
// logger.error(e.getMessage(), e);
// result.setErrorCode("-1");
// return result;
// }
// result.setErrorCode("0");
// return result;
// }
} }
package com.viettel.campaign.service.impl;
import com.viettel.campaign.repository.CampaignExecuteRepository;
import com.viettel.campaign.service.CampaignExecuteService;
import com.viettel.campaign.utils.BundleUtils;
import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.ApParamDTO;
import com.viettel.campaign.web.dto.ContactCustResultDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.commons.collections4.BagUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@Service
public class CampaignExecuteServiceImp implements CampaignExecuteService {
private static final Logger logger = LoggerFactory.getLogger(CampaignExecuteServiceImp.class);
private SimpleDateFormat formatter = new SimpleDateFormat(Constants.DATE_FORMAT.FOMART_DATE_TYPE_1);
@Autowired
CampaignExecuteRepository campaignExecuteRepository;
//<editor-fold: hungtt>
@Override
public ResultDTO getComboBoxStatus(String companySiteId, String completeType) {
ResultDTO resultDTO = new ResultDTO();
try {
List<ApParamDTO> lst = campaignExecuteRepository.getComboBoxStatus(companySiteId, completeType);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(lst);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return resultDTO;
}
@Override
public ResultDTO getComboCampaignType(String companySiteId) {
ResultDTO resultDTO = new ResultDTO();
try {
List<ApParamDTO> lst = campaignExecuteRepository.getComboCampaignType(companySiteId);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(lst);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return resultDTO;
}
@Override
public ResultDTO searchInteractiveResult(CampaignRequestDTO dto) {
ResultDTO resultDTO = new ResultDTO();
try {
resultDTO = campaignExecuteRepository.getInteractiveResult(dto);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return resultDTO;
}
@Override
public XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto) {
Locale locale = Locale.forLanguageTag("vi");
List<ContactCustResultDTO> list = campaignExecuteRepository.getExcelInteractiveResult(dto);
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet;
// create font style
Font defaultFont = workbook.createFont();
defaultFont.setFontHeightInPoints((short) 13);
defaultFont.setFontName("Times New Roman");
defaultFont.setColor(IndexedColors.BLACK.getIndex());
Font titleFont = workbook.createFont();
titleFont.setFontHeightInPoints((short) 18);
titleFont.setFontName("Times New Roman");
titleFont.setColor(IndexedColors.BLACK.getIndex());
titleFont.setBold(true);
Font headerFont = workbook.createFont();
headerFont.setFontHeightInPoints((short) 13);
headerFont.setFontName("Times New Roman");
headerFont.setColor(IndexedColors.BLACK.getIndex());
headerFont.setBold(true);
CellStyle styleTitle = workbook.createCellStyle();
styleTitle.setFont(titleFont);
styleTitle.setAlignment(HorizontalAlignment.CENTER);
CellStyle styleRowHeader = workbook.createCellStyle();
styleRowHeader.setFont(headerFont);
styleRowHeader.setAlignment(HorizontalAlignment.CENTER);
styleRowHeader.setFillForegroundColor(IndexedColors.LIGHT_GREEN.getIndex());
styleRowHeader.setFillPattern(FillPatternType.SOLID_FOREGROUND);
styleRowHeader.setBorderRight(BorderStyle.THIN);
styleRowHeader.setRightBorderColor(IndexedColors.BLACK.getIndex());
styleRowHeader.setBorderBottom(BorderStyle.THIN);
styleRowHeader.setBottomBorderColor(IndexedColors.BLACK.getIndex());
styleRowHeader.setBorderLeft(BorderStyle.THIN);
styleRowHeader.setLeftBorderColor(IndexedColors.BLACK.getIndex());
styleRowHeader.setBorderTop(BorderStyle.THIN);
styleRowHeader.setTopBorderColor(IndexedColors.BLACK.getIndex());
CellStyle styleRow = workbook.createCellStyle();
styleRow.setFont(defaultFont);
// list header
List<String> headerList = new ArrayList<>();
headerList.add(BundleUtils.getLangString("stt", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.campaignCode", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.campaignName", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.agentId", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.phoneNumber", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.customerId", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.customerName", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.createTime", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.contactStatus", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.surveyStatus", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.status", locale));
headerList.add(BundleUtils.getLangString("campaign.execute.interactive.recordStatus", locale));
//
String sheetName = BundleUtils.getLangString("detail", locale);
sheet = workbook.createSheet(sheetName);
// Title
String title = BundleUtils.getLangString("campaign.execute.interactive.title", locale);
int rowTitleStart = 3;
Row rowTitle = sheet.createRow(rowTitleStart);
rowTitle.setHeight((short) 800);
writeCellContent(rowTitle, styleTitle, 3, title);
sheet.addMergedRegion(new CellRangeAddress(rowTitleStart, rowTitleStart, 3, 8));
// Header
int startRowTable = 5;
int count = 1;
Row rowHeader = sheet.createRow(startRowTable);
for (int i = 0; i < headerList.size(); i++) {
writeCellContent(rowHeader, styleRowHeader, i, headerList.get(i));
}
// Content
for (int i = 0, rowIndex = 1; i < list.size(); i++) {
Row row = sheet.createRow(startRowTable + count);
int col = 0;
writeCellContent(row, styleRow, col++, rowIndex);
writeCellContent(row, styleRow, col++, list.get(i).getCampaignCode());
writeCellContent(row, styleRow, col++, list.get(i).getCampaignName());
writeCellContent(row, styleRow, col++, list.get(i).getAgentId());
writeCellContent(row, styleRow, col++, list.get(i).getPhoneNumber());
writeCellContent(row, styleRow, col++, list.get(i).getCustomerId());
writeCellContent(row, styleRow, col++, list.get(i).getCustomerName());
writeCellContent(row, styleRow, col++, formatter.format(list.get(i).getCreateTime()));
writeCellContent(row, styleRow, col++, list.get(i).getContactStatus());
writeCellContent(row, styleRow, col++, list.get(i).getSurveyStatus());
writeCellContent(row, styleRow, col++, list.get(i).getStatus());
writeCellContent(row, styleRow, col++, list.get(i).getRecordStatus());
++rowIndex;
++count;
}
return workbook;
}
private void writeCellContent(Row row, CellStyle rowStyle, int colNo, Object content) {
Cell cell = row.createCell(colNo);
if (content == null) {
cell.setCellValue("");
} else {
cell.setCellValue(String.valueOf(content));
}
cell.setCellStyle(rowStyle);
}
//</editor-fold: hungtt>
}
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.viettel.campaign.model.Campaign; import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.model.TimeRangeDialMode;
import com.viettel.campaign.model.TimeZoneDialMode; import com.viettel.campaign.model.TimeZoneDialMode;
//import com.viettel.campaign.model.UserActionLog;
import com.viettel.campaign.repository.CampaignRepository; import com.viettel.campaign.repository.CampaignRepository;
import com.viettel.campaign.repository.TimeRangeDialModeRepository;
import com.viettel.campaign.repository.TimeZoneDialModeRepository; import com.viettel.campaign.repository.TimeZoneDialModeRepository;
//import com.viettel.campaign.repository.UserActionLogRepository;
import com.viettel.campaign.repository.UserActionLogRepositoryCustom;
import com.viettel.campaign.repository.impl.CampaignRepositoryImpl; import com.viettel.campaign.repository.impl.CampaignRepositoryImpl;
import com.viettel.campaign.service.CampaignService; import com.viettel.campaign.service.CampaignService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.web.dto.CampaignDTO; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO; import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
...@@ -17,8 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -17,8 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap; import java.util.*;
import java.util.Map;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -31,6 +34,12 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -31,6 +34,12 @@ public class CampaignServiceImpl implements CampaignService {
@Autowired @Autowired
TimeZoneDialModeRepository timeZoneDialModeRepository; TimeZoneDialModeRepository timeZoneDialModeRepository;
@Autowired
TimeRangeDialModeRepository timeRangeDialModeRepository;
@Autowired
UserActionLogRepositoryCustom userActionLogRepository;
@Autowired @Autowired
ModelMapper modelMapper; ModelMapper modelMapper;
...@@ -68,29 +77,46 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -68,29 +77,46 @@ public class CampaignServiceImpl implements CampaignService {
@Override @Override
public ResultDTO addNewCampaign(CampaignDTO campaignDTO) { public ResultDTO addNewCampaign(CampaignDTO campaignDTO) {
logger.info("=== Start add new campaign ");
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
Campaign campaign = modelMapper.map(campaignDTO, Campaign.class); Campaign campaign = modelMapper.map(campaignDTO, Campaign.class);
TimeZoneDialMode timeZoneDialMode = new TimeZoneDialMode(); Long campaignId;
List<TimeZoneDialModeDTO> timeZoneDialModes = new ArrayList<>();
List<TimeRangeDialModeDTO> timeRangeDialModes = new ArrayList<>();
List<TimeRangeDialMode> lstTimeRangeModeToInsert = new ArrayList<>();
List<TimeZoneDialMode> lstTimeZoneModeToInser = new ArrayList<>();
try { try {
campaign = campaignRepository.save(campaign); String campaignCode = generateCampaignCode(campaignDTO.getCampaignType(), campaignDTO.getChanel());
campaign.setCampaignCode(campaignCode);
Campaign campaignResult = campaignRepository.save(campaign);
campaignId = campaign.getCampaignId();
//insert sub tables //insert sub tables
if (campaignDTO.getCurrentTimeMode().equals(1)) {
timeZoneDialMode.setCompanySiteId(campaignDTO.getCompanySiteId());
timeZoneDialMode.setCampaignId(campaign.getCampaignId());
// timeZoneDialMode.setHour(campaignDTO.getT);
timeZoneDialModeRepository.save(timeZoneDialMode); if (campaignDTO.getLstTimeRange().size() > 0) {
timeRangeDialModes = campaignDTO.getLstTimeRange();
timeRangeDialModes.forEach(item -> {
item.setCampaignId(campaignId);
TimeRangeDialMode timeRangeDialMode = modelMapper.map(item, TimeRangeDialMode.class);
lstTimeRangeModeToInsert.add(timeRangeDialMode);
});
timeRangeDialModeRepository.saveAll(lstTimeRangeModeToInsert);
} }
if (campaignDTO.getCurrentTimeMode().equals(2)) { if (campaignDTO.getLstTimeZone().size() > 0) {
timeZoneDialModes = campaignDTO.getLstTimeZone();
timeZoneDialModes.forEach(item -> {
item.setCampaignId(campaignId);
TimeZoneDialMode timeZoneDialMode = modelMapper.map(item, TimeZoneDialMode.class);
lstTimeZoneModeToInser.add(timeZoneDialMode);
});
timeZoneDialModeRepository.saveAll(lstTimeZoneModeToInser);
} }
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setErrorCode(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(campaign); resultDTO.setData(campaignResult);
} catch (Exception ex) { } catch (Exception ex) {
logger.error(ex.getMessage(), ex); logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setErrorCode(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} }
return resultDTO; return resultDTO;
} }
...@@ -113,4 +139,78 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -113,4 +139,78 @@ public class CampaignServiceImpl implements CampaignService {
return result; return result;
} }
@Override
public ResultDTO findCampaignById(Long campaignId) {
logger.info("=== Start find campaign by id: " + campaignId);
ResultDTO resultDTO = new ResultDTO();
try {
Campaign campaign = campaignRepository.findById(campaignId).orElse(null);
if (campaign != null) {
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
resultDTO.setData(campaign);
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
@Override
public ResultDTO changeCampaignStatus(CampaignDTO dto) {
ResultDTO result = new ResultDTO();
try {
Campaign entity = campaignRepository.findCampaignByCampaignIdAndCompanySiteId(dto.getCampaignId(), dto.getCompanySiteId());
if (entity != null) {
entity.setStatus(dto.getStatus().longValue());
entity.setUpdateTime(new Date());
entity.setUpdateBy(dto.getUpdateBy());
campaignRepository.save(entity);
UserActionLogDTO userActionLog = new UserActionLogDTO();
userActionLog.setAgentId(null);
userActionLog.setSessionId(dto.getSessionId());
userActionLog.setCompanySiteId(dto.getCompanySiteId());
userActionLog.setDescription(null);
userActionLog.setStartTime(new Date());
userActionLog.setEndTime(null);
userActionLog.setObjectId(entity.getCampaignId());
if (dto.getStatus().equals((short) -1)) {
userActionLog.setActionType((short) 2);
} else if (dto.getStatus().equals((short) 5)) {
userActionLog.setActionType((short) 7);
} else if (dto.getStatus().equals((short) 4)) {
userActionLog.setActionType((short) 4);
} else if (dto.getStatus().equals((short) 3)) {
userActionLog.setActionType((short) 5);
}
userActionLogRepository.insertToUserActionLog(userActionLog);
result.setData(entity);
result.setDescription(Constants.ApiErrorDesc.SUCCESS);
result.setErrorCode(Constants.ApiErrorCode.SUCCESS);
} else {
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription("Entity not found");
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
result.setErrorCode(Constants.ApiErrorCode.ERROR);
result.setDescription(e.getMessage());
}
return result;
}
private String generateCampaignCode(String campaignType, Short chanel) {
int year = Calendar.getInstance().get(Calendar.YEAR);
String maxIndexStr = campaignRepository.getMaxCampaignIndex();
if (maxIndexStr != null) {
Long maxIndex = Long.valueOf(maxIndexStr) + 1;
String result = campaignType + "_" + String.valueOf(chanel) + "_" + String.valueOf(year) + "_" + maxIndex.toString();
return result;
}
return null;
}
} }
...@@ -11,12 +11,9 @@ import com.viettel.campaign.utils.Constants; ...@@ -11,12 +11,9 @@ 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.CustomerContactDTO; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.CustomerDTO; import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO;
import com.viettel.campaign.web.dto.CustomerListDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignCustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.DeleteCustomerRequestDTO;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
...@@ -32,7 +29,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -32,7 +29,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.Query; import javax.persistence.Query;
import java.util.*; import java.util.Date;
import java.util.List;
@Service @Service
public class CustomerServiceImpl implements CustomerService { public class CustomerServiceImpl implements CustomerService {
...@@ -59,17 +57,68 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -59,17 +57,68 @@ public class CustomerServiceImpl implements CustomerService {
CustomerListMappingRepository customerListMappingRepository; CustomerListMappingRepository customerListMappingRepository;
@Override @Override
public Map listAllCustomer(int page, int pageSize, String sort) { public ResultDTO getAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId) {
Map result = new HashMap(); ResultDTO resultDTO = new ResultDTO();
List<Customer> lst = new ArrayList<>(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Pageable pageable = PageRequest.of(page, pageSize, Sort.by(sort)); Session session = sessionFactory.openSession();
Page<Customer> pc = customerRepository.findAll(pageable); session.beginTransaction();
result.put("totalItem", pc.getTotalElements()); if (DataUtil.isNullOrZero(companySiteId)) {
result.put("customers", pc.iterator()); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
return result; try {
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
sqlStrBuilder.append(" ORDER BY name DESC");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_list_id", customerListId);
query.addScalar("customerListMappingId", new LongType());
query.addScalar("companySiteId", new LongType());
query.addScalar("customerListId", new LongType());
query.addScalar("customerId", new LongType());
query.addScalar("name", new StringType());
query.addScalar("description", new StringType());
query.addScalar("companyName", new StringType());
query.addScalar("customerType", new StringType());
query.addScalar("currentAddress", new StringType());
query.addScalar("mobileNumber", new StringType());
query.addScalar("email", new StringType());
query.setResultTransformer(Transformers.aliasToBean(CustomerCustomDTO.class));
int count = 0;
List<CustomerCustomDTO> 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<CustomerCustomDTO> data = query.list();
Page<CustomerCustomDTO> 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 @Override
...@@ -91,17 +140,71 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -91,17 +140,71 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
public Map listCustByName(int page, int pageSize, String sort, String name) { public ResultDTO searchAllCustomer(int page, int pageSize, String sort, long customerListId, long companySiteId, String name, String mobileNumber, String email) {
Map result = new HashMap(); ResultDTO resultDTO = new ResultDTO();
List<Customer> lst = new ArrayList<>(); 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;
}
Pageable pageable = PageRequest.of(page, pageSize, Sort.by(sort)); try {
lst = customerRepository.findByName(name, pageable); StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
result.put("totalItem", lst.size()); sqlStrBuilder.append(" AND ");
result.put("customers", lst); sqlStrBuilder.append(" ORDER BY name DESC");
sqlStrBuilder.append(" ORDER BY name DESC");
sqlStrBuilder.append(" ORDER BY name DESC");
return result; SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_customer_list_id", customerListId);
query.addScalar("customerListMappingId", new LongType());
query.addScalar("companySiteId", new LongType());
query.addScalar("customerListId", new LongType());
query.addScalar("customerId", new LongType());
query.addScalar("name", new StringType());
query.addScalar("description", new StringType());
query.addScalar("companyName", new StringType());
query.addScalar("customerType", new StringType());
query.addScalar("currentAddress", new StringType());
query.addScalar("mobileNumber", new StringType());
query.addScalar("email", new StringType());
query.setResultTransformer(Transformers.aliasToBean(CustomerCustomDTO.class));
int count = 0;
List<CustomerCustomDTO> 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<CustomerCustomDTO> data = query.list();
Page<CustomerCustomDTO> 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 @Override
...@@ -139,14 +242,15 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -139,14 +242,15 @@ public class CustomerServiceImpl implements CustomerService {
return resultDTO; return resultDTO;
} }
@Transactional
@Override @Override
public ResultDTO deleteCustomer(DeleteCustomerRequestDTO deleteCustomerRequestDTO) { public ResultDTO deleteCustomer(CustomerRequestDTO customerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
if (deleteCustomerRequestDTO != null) { if (customerRequestDTO != null) {
// delete // delete
// customerRepository.deleteById(customerDTO.getCustomerId()); // customerRepository.deleteById(customerDTO.getCustomerId());
customerListMappingRepository.deleteMappingByCustomerId(deleteCustomerRequestDTO.getCustomerId(), deleteCustomerRequestDTO.getCustomerListId()); customerListMappingRepository.deleteMappingByCustomerId(customerRequestDTO.getCustomerId(), customerRequestDTO.getCustomerListId(), customerRequestDTO.getCompanySiteId());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
...@@ -163,12 +267,12 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -163,12 +267,12 @@ public class CustomerServiceImpl implements CustomerService {
@Transactional @Transactional
@Override @Override
public ResultDTO deleteIds(DeleteCustomerRequestDTO deleteCustomerRequestDTO) { public ResultDTO deleteIds(CustomerRequestDTO customerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
if (deleteCustomerRequestDTO != null) { if (customerRequestDTO != null) {
// customerRepository.deleteIds(ids); // customerRepository.deleteIds(ids);
customerListMappingRepository.deleteMappingByCustomerIds(deleteCustomerRequestDTO.getCustomerIds(), deleteCustomerRequestDTO.getCustomerListId()); customerListMappingRepository.deleteMappingByCustomerIds(customerRequestDTO.getIds(), customerRequestDTO.getCustomerListId(), customerRequestDTO.getCompanySiteId());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else { } else {
...@@ -198,17 +302,67 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -198,17 +302,67 @@ public class CustomerServiceImpl implements CustomerService {
// ------------- customer list ----------------- // // ------------- customer list ----------------- //
@Override @Override
public Map getCustomerList(int page, int pageSize, String sort) { public ResultDTO getAllCustomerList(int page, int pageSize, String sort, Long companySiteId) {
Map result = new HashMap(); ResultDTO resultDTO = new ResultDTO();
List<CustomerList> list = new ArrayList<>(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Pageable pageable = PageRequest.of(page, pageSize, Sort.by(sort)); Session session = sessionFactory.openSession();
Page<CustomerList> pc = customerListRepository.findAll(pageable); session.beginTransaction();
result.put("totalItem", pc.getTotalElements()); if (DataUtil.isNullOrZero(companySiteId)) {
result.put("customerList", pc.iterator()); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
return result; try {
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
sqlStrBuilder.append(" ORDER BY CREATE_AT DESC");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.addScalar("customerListId", new LongType());
query.addScalar("companySiteId", new LongType());
query.addScalar("customerListCode", new StringType());
query.addScalar("customerListName", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("createBy", new StringType());
query.addScalar("createAt", new DateType());
query.addScalar("updateBy", new StringType());
query.addScalar("updateAt", new DateType());
query.addScalar("source", new StringType());
query.addScalar("deptCreate", new StringType());
query.setResultTransformer(Transformers.aliasToBean(CustomerListDTO.class));
int count = 0;
List<CustomerListDTO> 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<CustomerListDTO> data = query.list();
Page<CustomerListDTO> 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 @Override
...@@ -245,11 +399,13 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -245,11 +399,13 @@ public class CustomerServiceImpl implements CustomerService {
public ResultDTO updateCustomerList(CustomerListDTO customerListDTO) { public ResultDTO updateCustomerList(CustomerListDTO customerListDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
CustomerListMapper customerListMapper = new CustomerListMapper(); CustomerListMapper customerListMapper = new CustomerListMapper();
CustomerList customerList = customerListRepository.findCustomerListByCustomerListId(customerListDTO.getCustomerListId());
try { try {
if (customerListDTO != null) { if (customerListDTO != null) {
// update // update
CustomerList customerList = customerListRepository.findByCustomerListIdAndCompanySiteId(customerListDTO.getCustomerListId(), customerListDTO.getCompanySiteId());
if (customerList != null) {
customerList = customerListMapper.toPersistenceBean(customerListDTO); customerList = customerListMapper.toPersistenceBean(customerListDTO);
customerListRepository.save(customerList); customerListRepository.save(customerList);
...@@ -259,6 +415,10 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -259,6 +415,10 @@ public class CustomerServiceImpl implements CustomerService {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} }
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -275,9 +435,9 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -275,9 +435,9 @@ public class CustomerServiceImpl implements CustomerService {
// delete // delete
if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignCount(customerListDTO.getCustomerListId()))) { if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignCount(customerListDTO.getCustomerListId()))) {
customerListRepository.deleteCustomerList(customerListDTO.getCustomerListId()); customerListRepository.deleteCustomerList(customerListDTO.getCustomerListId(), customerListDTO.getCompanySiteId());
customerListMappingRepository.deleteMappingByCustomerListId(customerListDTO.getCustomerListId()); customerListMappingRepository.deleteMappingByCustomerListId(customerListDTO.getCustomerListId(), customerListDTO.getCompanySiteId());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
...@@ -295,14 +455,14 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -295,14 +455,14 @@ public class CustomerServiceImpl implements CustomerService {
@Transactional @Transactional
@Override @Override
public ResultDTO deleteCustomerListIds(List<Long> ids) { public ResultDTO deleteCustomerListIds(CustomerRequestDTO customerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
try { try {
if (ids != null) { if (customerRequestDTO != null) {
if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignIdsCount(ids))) { if (DataUtil.isNullOrZero(campaignCustomerListRepository.campaignIdsCount(customerRequestDTO.getIds()))) {
customerListRepository.deleteCustomerListIds(ids); customerListRepository.deleteCustomerListIds(customerRequestDTO.getIds(), customerRequestDTO.getCompanySiteId());
customerListMappingRepository.deleteMappingByCustomerListIds(ids); customerListMappingRepository.deleteMappingByCustomerListIds(customerRequestDTO.getIds(), customerRequestDTO.getCompanySiteId());
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS); resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
...@@ -321,14 +481,14 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -321,14 +481,14 @@ public class CustomerServiceImpl implements CustomerService {
} }
@Override @Override
public ResultDTO searchCustomerList(CampaignCustomerRequestDTO campaignCustomerRequestDTO) { public ResultDTO searchCustomerList(SearchCustomerRequestDTO searchCustomerRequestDTO) {
ResultDTO resultDTO = new ResultDTO(); ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession(); Session session = sessionFactory.openSession();
session.beginTransaction(); session.beginTransaction();
if (DataUtil.isNullOrEmpty(campaignCustomerRequestDTO.getCompanySiteId())) { if (DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCompanySiteId())) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR); resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR); resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO; return resultDTO;
...@@ -337,33 +497,37 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -337,33 +497,37 @@ public class CustomerServiceImpl implements CustomerService {
try { try {
StringBuilder sqlStrBuilder = new StringBuilder(); StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params")); sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
if (DataUtil.isNullOrEmpty(campaignCustomerRequestDTO.getCustomerListCode())) {
sqlStrBuilder.append(" AND CREATE_AT BETWEEN to_date(:p_date_from, 'YYYYMMDD') AND to_date(:p_date_to, 'YYYYMMDD')");
if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListCode())) {
sqlStrBuilder.append(" AND CUSTOMER_LIST_CODE LIKE :p_list_code"); sqlStrBuilder.append(" AND CUSTOMER_LIST_CODE LIKE :p_list_code");
} }
if (DataUtil.isNullOrEmpty(campaignCustomerRequestDTO.getCustomerListName())) { if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListName())) {
sqlStrBuilder.append(" AND CUSTOMER_LIST_NAME LIKE :p_list_name"); sqlStrBuilder.append(" AND CUSTOMER_LIST_NAME LIKE :p_list_name");
} }
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString()); SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_date_from", campaignCustomerRequestDTO.getConvertedDateFrom()); query.setParameter("p_company_site_id", searchCustomerRequestDTO.getCompanySiteId());
query.setParameter("p_date_to", campaignCustomerRequestDTO.getConvertedDateTo()); query.setParameter("p_date_from", searchCustomerRequestDTO.getConvertedDateFrom());
query.setParameter("p_date_to", searchCustomerRequestDTO.getConvertedDateTo());
if (!campaignCustomerRequestDTO.getCustomerListCode().equals("undefined")) { if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListCode())) {
query.setParameter("p_list_code", "%" + query.setParameter("p_list_code", "%" +
campaignCustomerRequestDTO.getCustomerListCode() searchCustomerRequestDTO.getCustomerListCode()
.replace("\\", "\\\\") .replace("\\", "\\\\")
.replaceAll("%", "\\\\%") .replaceAll("%", "\\%")
.replaceAll("_", "\\\\_") .replaceAll("_", "\\_")
+ "%"); + "%");
} }
if (!campaignCustomerRequestDTO.getCustomerListName().equals("undefined")) { if (!DataUtil.isNullOrEmpty(searchCustomerRequestDTO.getCustomerListName())) {
query.setParameter("p_list_name", "%" + query.setParameter("p_list_name", "%" +
campaignCustomerRequestDTO.getCustomerListName() searchCustomerRequestDTO.getCustomerListName()
.replace("\\", "\\\\") .replace("\\", "\\\\")
.replaceAll("%", "\\\\%") .replaceAll("%", "\\%")
.replaceAll("_", "\\\\_") .replaceAll("_", "\\_")
+ "%"); + "%");
} }
...@@ -385,7 +549,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -385,7 +549,8 @@ public class CustomerServiceImpl implements CustomerService {
if (dtoList.size() > 0) { if (dtoList.size() > 0) {
count = query.list().size(); count = query.list().size();
} }
Pageable pageable = SQLBuilder.buildPageable(campaignCustomerRequestDTO);
Pageable pageable = PageRequest.of(searchCustomerRequestDTO.getPage(), searchCustomerRequestDTO.getPageSize(), Sort.by(searchCustomerRequestDTO.getSort()));
if (pageable != null) { if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize()); query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize()); query.setMaxResults(pageable.getPageSize());
......
package com.viettel.campaign.service.impl;
import com.viettel.campaign.service.UserActionLogService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author anhvd_itsol
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class UserActionLogServiceImpl implements UserActionLogService {
}
package com.viettel.campaign.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.UnsupportedEncodingException;
import java.util.Locale;
import java.util.ResourceBundle;
/**
* @author hungtt
*/
public class BundleUtils {
protected static final Logger logger = LoggerFactory.getLogger(BundleUtils.class);
private static volatile ResourceBundle rsConfig = null;
public static String getLangString(String key, Locale... locale) {
Locale vi = new Locale("vi");
Locale mlocale = vi;
try {
if(locale != null) {
if(locale.length == 0) {
rsConfig = ResourceBundle.getBundle(Constants.LANGUAGE.LANGUAGE, mlocale);
} else {
rsConfig = ResourceBundle.getBundle(Constants.LANGUAGE.LANGUAGE, locale[0]);
}
} else {
rsConfig = ResourceBundle.getBundle(Constants.LANGUAGE.LANGUAGE, mlocale);
}
return new String(rsConfig.getString(key).getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
logger.error(e.getMessage(), e);
return key;
}
}
}
...@@ -31,4 +31,16 @@ public class Constants { ...@@ -31,4 +31,16 @@ public class Constants {
String ACTIVE_STR = "Trạng thái kêt nối(Không thành công)"; String ACTIVE_STR = "Trạng thái kêt nối(Không thành công)";
String INACTIVE_STR = "Trạng thái khảo sát"; String INACTIVE_STR = "Trạng thái khảo sát";
} }
public interface SQL_MODULES {
String MODULE_EXECUTE = "campaign-execute";
}
public interface LANGUAGE {
String LANGUAGE = "i18n/language";
}
public interface DATE_FORMAT {
String FOMART_DATE_TYPE_1 = "DD/MM/YYYY";
}
} }
...@@ -5,7 +5,6 @@ import java.nio.file.Paths; ...@@ -5,7 +5,6 @@ import java.nio.file.Paths;
import java.io.IOException; import java.io.IOException;
import com.viettel.campaign.web.dto.BaseDTO; import com.viettel.campaign.web.dto.BaseDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
......
...@@ -13,4 +13,5 @@ public class BaseDTO implements Serializable { ...@@ -13,4 +13,5 @@ public class BaseDTO implements Serializable {
protected int pageSize; protected int pageSize;
protected int page; protected int page;
protected String sort; protected String sort;
protected String langKey;
} }
...@@ -4,6 +4,7 @@ import lombok.Getter; ...@@ -4,6 +4,7 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date; import java.util.Date;
import java.util.List;
@Getter @Getter
@Setter @Setter
...@@ -57,5 +58,11 @@ public class CampaignDTO extends BaseDTO { ...@@ -57,5 +58,11 @@ public class CampaignDTO extends BaseDTO {
private Long numOfNotJoinedCus; private Long numOfNotJoinedCus;
private Long numOfLockCus; private Long numOfLockCus;
private String campaignTypeName; private String campaignTypeName;
private Date timeRangeStartTime;
private String timeZoneHour;
private String timeZoneMinute;
private List<TimeRangeDialModeDTO> lstTimeRange;
private List<TimeZoneDialModeDTO> lstTimeZone;
private Short agentStatus; private Short agentStatus;
private String sessionId;
} }
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 ContactCustResultDTO extends BaseDTO{
private Long contacCustResultId;
private Long companySiteId;
private Short callStatus;
private Short recordStatus;
private String description;
private Date createTime;
private String callTime;
private Long agentId;
private Long campaignId;
private String campaignName;
private Long phoneNumber;
private String customerName;
private Long customerId;
private String contactStatus;
private String campaignCode;
private String userName;
private String surveyStatus;
private Short status;
private Boolean enableEdit;
}
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CustomerCustomDTO {
Long customerListMappingId;
Long companySiteId;
Long customerListId;
Long customerId;
String name;
String description;
String companyName;
String customerType;
String currentAddress;
String mobileNumber;
String email;
}
...@@ -10,7 +10,7 @@ import lombok.Setter; ...@@ -10,7 +10,7 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class TimeZoneDialModeDTO { public class TimeZoneDialModeDTO {
private Long timeRangeDialModeId; private Long timeZoneDialModeId;
private Long companySiteId; private Long companySiteId;
private String hour; private String hour;
private String minute; private String minute;
......
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public class UserActionLogDTO {
private Long agentId; //userId
private Long companySiteId;
private String sessionId;
private Date startTime;
private Date endTime;
private Short actionType;
private String description;
private Long objectId; //campaignId
}
...@@ -25,4 +25,20 @@ public class CampaignRequestDTO extends BaseDTO { ...@@ -25,4 +25,20 @@ public class CampaignRequestDTO extends BaseDTO {
String companySiteId; String companySiteId;
String agentId; String agentId;
String types; String types;
String phoneNumber;
String contactStatus;
String campaignStatus;
String customerId;
String customerName;
String callTimeTo;
String callTimeFrom;
String recordStatus;
String connectStatus;
String toDate;
String fromDate;
String campaignType;
String agentName;
String campaignId;
String surveyStatus;
String roleUser;
} }
...@@ -7,8 +7,9 @@ import java.util.List; ...@@ -7,8 +7,9 @@ import java.util.List;
@Getter @Getter
@Setter @Setter
public class DeleteCustomerRequestDTO { public class CustomerRequestDTO {
Long customerId; Long customerId;
Long customerListId; Long customerListId;
List<Long> customerIds; List<Long> ids;
Long companySiteId;
} }
...@@ -6,7 +6,7 @@ import lombok.Setter; ...@@ -6,7 +6,7 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class CampaignCustomerRequestDTO extends BaseDTO { public class SearchCustomerRequestDTO extends BaseDTO {
String customerListCode; String customerListCode;
String customerListName; String customerListName;
String convertedDateFrom; String convertedDateFrom;
......
...@@ -2,6 +2,7 @@ package com.viettel.campaign.web.rest; ...@@ -2,6 +2,7 @@ package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ApParam; import com.viettel.campaign.model.ApParam;
import com.viettel.campaign.service.ApParamService; import com.viettel.campaign.service.ApParamService;
import com.viettel.campaign.service.CampaignExecuteService;
import com.viettel.campaign.web.rest.controller.CustomerController; import com.viettel.campaign.web.rest.controller.CustomerController;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -19,9 +20,18 @@ public class ApParamController { ...@@ -19,9 +20,18 @@ public class ApParamController {
private static final Logger LOGGER = Logger.getLogger(CustomerController.class); private static final Logger LOGGER = Logger.getLogger(CustomerController.class);
private static final String CONNECT_STATUS = "CONNECT_STATUS";
private static final String CONNECT_STATUS_TYPE = "1";
private static final String SURVEY_STATUS = "SURVEY_STATUS";
private static final String SURVEY_STATUS_TYPE = "2";
private static final String CAMPAIGN_TYPE = "CAMPAIGN_TYPE";
@Autowired(required = true) @Autowired(required = true)
ApParamService apParamService; ApParamService apParamService;
@Autowired
CampaignExecuteService campaignExecuteService;
@GetMapping(path = "/findAlls") @GetMapping(path = "/findAlls")
@ResponseBody @ResponseBody
public ResponseEntity listAllCustomer(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort) { public ResponseEntity listAllCustomer(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort) {
...@@ -56,5 +66,20 @@ public class ApParamController { ...@@ -56,5 +66,20 @@ public class ApParamController {
} }
return new ResponseEntity(findAll, HttpStatus.OK); return new ResponseEntity(findAll, HttpStatus.OK);
} }
//<editor-fold: hungtt>
@GetMapping("/getDataComboBox")
@ResponseBody
public ResponseEntity getComboBox(@RequestParam("parType") String parType, @RequestParam("companySiteId") String companySiteId) {
if (CONNECT_STATUS.equals(parType)) {
return new ResponseEntity<>(campaignExecuteService.getComboBoxStatus(companySiteId, CONNECT_STATUS_TYPE), HttpStatus.OK);
} else if (SURVEY_STATUS.equals(parType)){
return new ResponseEntity<>(campaignExecuteService.getComboBoxStatus(companySiteId, SURVEY_STATUS_TYPE), HttpStatus.OK);
} else {
return new ResponseEntity<>(campaignExecuteService.getComboCampaignType(companySiteId), HttpStatus.OK);
}
}
//</editor-fold: hungtt>
} }
...@@ -15,7 +15,7 @@ import javax.validation.Valid; ...@@ -15,7 +15,7 @@ import javax.validation.Valid;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Controller @RestController
@RequestMapping("/ipcc/completeCode") @RequestMapping("/ipcc/completeCode")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
public class CampaignCompleteCodeController { public class CampaignCompleteCodeController {
...@@ -84,7 +84,6 @@ public class CampaignCompleteCodeController { ...@@ -84,7 +84,6 @@ public class CampaignCompleteCodeController {
ResultDTO resultDTO = completeCodeService.deleteList(completeCodeDtos); ResultDTO resultDTO = completeCodeService.deleteList(completeCodeDtos);
return new ResponseEntity<>(resultDTO, HttpStatus.OK); return new ResponseEntity<>(resultDTO, HttpStatus.OK);
} }
@CrossOrigin(origins = "*")
@PostMapping("/deleteById") @PostMapping("/deleteById")
@ResponseBody @ResponseBody
public ResultDTO deleteById(@RequestParam("id") Long id){ public ResultDTO deleteById(@RequestParam("id") Long id){
...@@ -93,5 +92,13 @@ public class CampaignCompleteCodeController { ...@@ -93,5 +92,13 @@ public class CampaignCompleteCodeController {
return resultDTO; return resultDTO;
} }
@CrossOrigin(origins = "*")
@PostMapping("/getMaxValue")
@ResponseBody
public ResultDTO findMaxValueCampaignType(@RequestBody CampaignCompleteCodeDTO completeCodeDTO){
return completeCodeService.findMaxValueCampaignCompleteCode(completeCodeDTO);
}
} }
package com.viettel.campaign.web.rest.controller; package com.viettel.campaign.web.rest.controller;
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.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.log4j.Logger; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
<<<<<<< HEAD
import org.springframework.cloud.sleuth.instrument.reactor.ReactorSleuth; import org.springframework.cloud.sleuth.instrument.reactor.ReactorSleuth;
=======
import org.springframework.http.HttpHeaders;
>>>>>>> 55a6b806b604aa92fca10c101776df185d0d67af
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map; import java.util.Map;
@RestController @RestController
...@@ -17,12 +32,19 @@ import java.util.Map; ...@@ -17,12 +32,19 @@ import java.util.Map;
@CrossOrigin @CrossOrigin
public class CampaignController { public class CampaignController {
private static final Logger LOGGER = Logger.getLogger(CampaignController.class); private static final Logger logger = LoggerFactory.getLogger(CampaignController.class);
@Autowired @Autowired
CampaignService campaignService; CampaignService campaignService;
<<<<<<< HEAD
@PostMapping("/searchCampaignExecute") @PostMapping("/searchCampaignExecute")
=======
@Autowired
CampaignExecuteService campaignExecuteService;
@RequestMapping("/searchCampaignExecute")
>>>>>>> 55a6b806b604aa92fca10c101776df185d0d67af
@ResponseBody @ResponseBody
public ResponseEntity<ResultDTO> searchCampaignExecute(@RequestBody CampaignRequestDTO requestDto) { public ResponseEntity<ResultDTO> searchCampaignExecute(@RequestBody CampaignRequestDTO requestDto) {
ResultDTO result = campaignService.searchCampaignExecute(requestDto); ResultDTO result = campaignService.searchCampaignExecute(requestDto);
...@@ -35,14 +57,14 @@ public class CampaignController { ...@@ -35,14 +57,14 @@ public class CampaignController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@RequestMapping(value = "/findByCampaignCode", method = RequestMethod.POST) @RequestMapping(value = "/find-by-campaign-code", method = RequestMethod.POST)
public ResultDTO findByCampaignCode(@RequestBody CampaignRequestDTO dto) { public ResultDTO findByCampaignCode(@RequestBody CampaignRequestDTO dto) {
return campaignService.findByCampaignCode(dto); return campaignService.findByCampaignCode(dto);
} }
@RequestMapping(method = RequestMethod.POST) @RequestMapping(method = RequestMethod.POST)
public ResultDTO addNewCampaign(@RequestBody CampaignRequestDTO dto) { public ResultDTO addNewCampaign(@RequestBody CampaignDTO dto) {
return campaignService.findByCampaignCode(dto); return campaignService.addNewCampaign(dto);
} }
@GetMapping("/countRecallCustomer") @GetMapping("/countRecallCustomer")
...@@ -52,10 +74,57 @@ public class CampaignController { ...@@ -52,10 +74,57 @@ public class CampaignController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
<<<<<<< HEAD
@GetMapping("/findByCampaignId") @GetMapping("/findByCampaignId")
@ResponseBody @ResponseBody
public ResponseEntity findByCampaignId(@RequestParam("campaignId") Long campaignId) { public ResponseEntity findByCampaignId(@RequestParam("campaignId") Long campaignId) {
ResultDTO result = campaignService.findByCampaignId(campaignId); ResultDTO result = campaignService.findByCampaignId(campaignId);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
=======
@PostMapping("/searchInteractiveResult")
@ResponseBody
public ResponseEntity<ResultDTO> searchInteractiveResult(@RequestBody CampaignRequestDTO dto) throws Exception {
ResultDTO result = campaignExecuteService.searchInteractiveResult(dto);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/exportInteractiveResult")
@ResponseBody
public ResponseEntity<?> exportInteractiveResult(HttpServletResponse response, @RequestBody CampaignRequestDTO dto) {
XSSFWorkbook workbook = null;
byte[] contentReturn = null;
try {
String fileName = "report_campaign_exec_interactive_result.xlsx";
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
OutputStream outputStream;
workbook = campaignExecuteService.exportInteractiveResult(dto);
outputStream = response.getOutputStream();
workbook.write(outputStream);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
workbook.write(byteArrayOutputStream);
contentReturn = byteArrayOutputStream.toByteArray();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return new ResponseEntity<byte[]>(null, null, HttpStatus.BAD_REQUEST);
} finally {
if (workbook != null) {
try {
workbook.close();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/vnd.ms-excel"));
return new ResponseEntity<byte[]>(contentReturn, headers, HttpStatus.OK);
}
@RequestMapping(value = "/changeCampaignStatus", method = RequestMethod.PUT)
public ResultDTO changeCampaignStatus(@RequestBody CampaignDTO dto, HttpServletRequest request) {
dto.setSessionId(request.getSession().getId());
return campaignService.changeCampaignStatus(dto);
}
>>>>>>> 55a6b806b604aa92fca10c101776df185d0d67af
} }
...@@ -5,22 +5,32 @@ import com.viettel.campaign.web.dto.CustomerDTO; ...@@ -5,22 +5,32 @@ import com.viettel.campaign.web.dto.CustomerDTO;
import com.viettel.campaign.web.dto.CustomerListDTO; import com.viettel.campaign.web.dto.CustomerListDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.service.CustomerService; import com.viettel.campaign.service.CustomerService;
import com.viettel.campaign.web.dto.request_dto.CampaignCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.DeleteCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.File;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Controller @Controller
@RequestMapping("/ipcc/customer") @RequestMapping("/ipcc/customer")
@CrossOrigin("*") @CrossOrigin(origins = "*")
public class CustomerController { public class CustomerController {
private static final Logger LOGGER = Logger.getLogger(CustomerController.class); private static final Logger LOGGER = Logger.getLogger(CustomerController.class);
...@@ -30,8 +40,8 @@ public class CustomerController { ...@@ -30,8 +40,8 @@ public class CustomerController {
@GetMapping("/findAll") @GetMapping("/findAll")
@ResponseBody @ResponseBody
public ResponseEntity findAllCustomer(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort) { public ResponseEntity findAllCustomer(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort, @RequestParam("customerListId") long customerListId, @RequestParam("companySiteId") long companySiteId) {
Map result = customerService.listAllCustomer(page, pageSize, sort); ResultDTO result = customerService.getAllCustomer(page, pageSize, sort, customerListId, companySiteId);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
...@@ -42,10 +52,10 @@ public class CustomerController { ...@@ -42,10 +52,10 @@ public class CustomerController {
return new ResponseEntity(result, HttpStatus.OK); return new ResponseEntity(result, HttpStatus.OK);
} }
@GetMapping("/findCustomerByName") @GetMapping("/searchAllCustomerByParams")
@ResponseBody @ResponseBody
public ResponseEntity findAllCustomerName(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort, @RequestParam("name") String name) { public ResponseEntity findAllCustomerName(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort, @RequestParam("customerListId") Long customerListId, @RequestParam("companySiteId") Long companySiteId, @RequestParam("name") String name, @RequestParam("mobileNumber") String mobileNumber, @RequestParam("email") String email) {
Map result = customerService.listCustByName(page, pageSize, sort, name); ResultDTO result = customerService.searchAllCustomer(page, pageSize, sort, customerListId, companySiteId, name, mobileNumber, email);
return new ResponseEntity(result, HttpStatus.OK); return new ResponseEntity(result, HttpStatus.OK);
} }
...@@ -70,17 +80,17 @@ public class CustomerController { ...@@ -70,17 +80,17 @@ public class CustomerController {
@PostMapping("/delete") @PostMapping("/delete")
@ResponseBody @ResponseBody
public ResultDTO deleteCustomer(@RequestBody @Valid DeleteCustomerRequestDTO deleteCustomerRequestDTO) { public ResultDTO deleteCustomer(@RequestBody @Valid CustomerRequestDTO customerRequestDTO) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
result = customerService.deleteCustomer(deleteCustomerRequestDTO); result = customerService.deleteCustomer(customerRequestDTO);
return result; return result;
} }
@PostMapping("/deleteIds") @PostMapping("/deleteIds")
@ResponseBody @ResponseBody
public ResultDTO deleteIds(@RequestBody @Valid DeleteCustomerRequestDTO deleteCustomerRequestDTO) { public ResultDTO deleteIds(@RequestBody @Valid CustomerRequestDTO customerRequestDTO) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
result = customerService.deleteIds(deleteCustomerRequestDTO); result = customerService.deleteIds(customerRequestDTO);
return result; return result;
} }
...@@ -89,8 +99,8 @@ public class CustomerController { ...@@ -89,8 +99,8 @@ public class CustomerController {
@GetMapping("/findAlls") @GetMapping("/findAlls")
@ResponseBody @ResponseBody
public ResponseEntity findAllCustomerList(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort) { public ResponseEntity findAllCustomerList(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("sort") String sort, @RequestParam("companySiteId") Long companySiteId) {
Map result = customerService.getCustomerList(page, pageSize, sort); ResultDTO result = customerService.getAllCustomerList(page, pageSize, sort, companySiteId);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
...@@ -143,15 +153,15 @@ public class CustomerController { ...@@ -143,15 +153,15 @@ public class CustomerController {
@PostMapping("/deleteCustomerListIds") @PostMapping("/deleteCustomerListIds")
@ResponseBody @ResponseBody
public ResultDTO deleteCustomerListIds(@RequestBody @Valid List<Long> ids) { public ResultDTO deleteCustomerListIds(@RequestBody @Valid CustomerRequestDTO customerRequestDTO) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
result = customerService.deleteCustomerListIds(ids); result = customerService.deleteCustomerListIds(customerRequestDTO);
return result; return result;
} }
@RequestMapping(value = "/searchCustomerList", method = RequestMethod.POST) @RequestMapping(value = "/searchCustomerList", method = RequestMethod.POST)
public ResponseEntity searchCustomerList(@RequestBody CampaignCustomerRequestDTO campaignCustomerRequestDTO) { public ResponseEntity searchCustomerList(@RequestBody SearchCustomerRequestDTO searchCustomerRequestDTO) {
ResultDTO result = customerService.searchCustomerList(campaignCustomerRequestDTO); ResultDTO result = customerService.searchCustomerList(searchCustomerRequestDTO);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
...@@ -168,4 +178,60 @@ public class CustomerController { ...@@ -168,4 +178,60 @@ public class CustomerController {
ResultDTO result = customerService.getCustomerRecall(campaignId, customerId); ResultDTO result = customerService.getCustomerRecall(campaignId, customerId);
return new ResponseEntity(result, HttpStatus.OK); return new ResponseEntity(result, HttpStatus.OK);
} }
@GetMapping(value = "/downloadFileTemplate")
public ResponseEntity<byte[]> downloadFileTemplate() {
LOGGER.debug("--------DOWNLOAD FILE TEMPLATE---------");
try {
File file = ResourceUtils.getFile("classpath:templates/test_download.xlsx");
byte[] content = Files.readAllBytes(file.toPath());
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(content);
} catch (Exception e) {
LOGGER.error(e.getMessage());
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
@PostMapping(value = "/importFile")
public ResponseEntity<byte[]> importFile(@RequestParam("file") MultipartFile file) {
LOGGER.debug("--------IMPORT FILE TEMPLATE---------");
try {
List<CustomerDTO> listCustomer = new ArrayList<>();
XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
XSSFSheet sheet = workbook.getSheetAt(0);
for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {
CustomerDTO customer = new CustomerDTO();
XSSFRow row = sheet.getRow(i);
customer.setCustomerId(Double.valueOf(row.getCell(0).getNumericCellValue()).longValue());
customer.setCreateDate(row.getCell(1).getDateCellValue());
customer.setName(row.getCell(2).getStringCellValue());
listCustomer.add(customer);
}
// for (int i = 0; i < listCustomer.size(); i++) {
// validate du lieu
// }
// if (okay) {
// for (int i = 0; i < listCustomer.size(); i++) {
// customerService.createCustomer(listCustomer.get(i));
// }
// return ResponseEntity.ok()
// .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName())
// .contentType(MediaType.APPLICATION_OCTET_STREAM)
// .body(file.getBytes());
// } else {
// return ResponseEntity.ok()
// .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file.getName())
// .header("Message", "Validate failed!")
// .contentType(MediaType.APPLICATION_OCTET_STREAM)
// .body(file.getBytes());
// }
return null;
} catch (Exception e) {
LOGGER.error(e.getMessage());
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
} }
#Common
detail = Chi ti?t
stt = STT
#Campaign Execute Interactive
campaign.execute.interactive.title = Chi ti?t k?t qu? t??ng tc
campaign.execute.interactive.campaignCode = M chi?n d?ch
campaign.execute.interactive.campaignName = Tn chi?n d?ch
campaign.execute.interactive.agentId = M t? v?n vin
campaign.execute.interactive.phoneNumber = S? ?i?n tho?i
campaign.execute.interactive.customerId = M khch hng
campaign.execute.interactive.customerName = Tn khch hng
campaign.execute.interactive.callTime = Th?i gian lin l?c
campaign.execute.interactive.contactStatus = Tr?ng thi k?t n?i
campaign.execute.interactive.surveyStatus = Tr?ng thi kh?o st
campaign.execute.interactive.status = Tr?ng thi chi?n d?ch
campaign.execute.interactive.recordStatus = Tr?ng thi b?n ghi
#Common
detail = Chi tiết
stt = STT
#Campaign Execute Interactive
campaign.execute.interactive.title = Chi tiết kết quả tương tác
campaign.execute.interactive.campaignCode = Mã chiến dịch
campaign.execute.interactive.campaignName = Tên chiến dịch
campaign.execute.interactive.agentId = Mã tư vấn viên
campaign.execute.interactive.phoneNumber = Số điện thoại
campaign.execute.interactive.customerId = Mã khách hàng
campaign.execute.interactive.customerName = Tên khách hàng
campaign.execute.interactive.createTime = Thời gian liên lạc
campaign.execute.interactive.contactStatus = Trạng thái kết nối
campaign.execute.interactive.surveyStatus = Trạng thái khảo sát
campaign.execute.interactive.status = Trạng thái chiến dịch
campaign.execute.interactive.recordStatus = Trạng thái bản ghi
select AP_PARAM_ID apParamId,
PAR_NAME parName
from AP_PARAM
where PAR_TYPE = 'CAMPAIGN_TYPE' and COMPANY_SITE_ID = :p_company_site_id
select COMPLETE_VALUE apParamId,
COMPLETE_NAME parName
from CAMPAIGN_COMPLETE_CODE
where to_char(COMPLETE_TYPE) = :p_complete_type and STATUS = 1 and COMPANY_SITE_ID = :p_company_site_id
select b.campaign_code campaignCode,
b.campaign_name campaignName,
c.user_name userName,
a.phone_number phoneNumber,
d.name customerName,
a.create_time createTime,
e.complete_name contactStatus,
f.complete_name surveyStatus,
g.status status,
a.status recordStatus
from contact_cust_result a
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 customer d on a.customer_id = d.customer_id
left join campaign_complete_code e on a.contact_status = e.complete_value
left join campaign_complete_code f on a.call_status = e.complete_value
left join campaign g on a.campaign_id = b.campaign_id
where a.status <> 0
and a.campaign_id in (:p_list_campaign_id)
and a.customer_id like '%'||:p_customer_id||'%'
and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')
and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')
and a.contact_status in (:p_list_contact_status)
and a.call_status in (:p_list_survey_status)
and a.status in (:p_list_record_status)
and a.phone_number like '%'||:p_phone_number||'%'
and a.duration_call >= :p_call_time_from
and a.duration_call <= :p_call_time_to
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,
c.MOBILE mobileNumber,
d.EMAIL email
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
where 1 = 1
and COMPANY_SITE_ID = :p_company_site_id
and CUSTOMER_LIST_ID = :p_customer_list_id
SELECT CASE WHEN
(SELECT COUNT(1) FROM CAMPAIGN) > 0
THEN (SELECT SUBSTR((SELECT CAMPAIGN_CODE FROM CAMPAIGN WHERE CAMPAIGN_ID = (SELECT MAX(CAMPAIGN_ID) FROM CAMPAIGN)),
INSTR((SELECT CAMPAIGN_CODE FROM CAMPAIGN WHERE CAMPAIGN_ID = (SELECT MAX(CAMPAIGN_ID) FROM CAMPAIGN)), '_', -1, 1 )+1) FROM DUAL)
ELSE '0'
END FROM DUAL
INSERT INTO "CCMS_FULL"."USER_ACTION_LOG" (
AGENT_ID,
COMPANY_SITE_ID,
SESSION_ID,
START_TIME,
END_TIME,
ACTION_TYPE,
DESCRIPTION,
OBJECT_ID)
VALUES (
:par_agentId,
:par_companySiteId,
:par_sessionId,
:par_startTime,
null,
:par_actionType,
null,
:par_objectId)
...@@ -12,4 +12,4 @@ SELECT ...@@ -12,4 +12,4 @@ SELECT
DEPT_CREATE deptCreate DEPT_CREATE deptCreate
FROM CUSTOMER_LIST FROM CUSTOMER_LIST
WHERE 1 = 1 WHERE 1 = 1
AND CREATE_AT BETWEEN :p_date_from AND :p_date_to AND COMPANY_SITE_ID = :p_company_site_id
DELETE FROM CAMPAIGN_COMPLETE_CODE WHERE CAMPAIGN_ID IN (0,1) DELETE FROM CAMPAIGN_COMPLETE_CODE WHERE CAMPAIGN_ID IN (0,1)
select *from CAMPAIGN_COMPLETE_CODE select *from CAMPAIGN_COMPLETE_CODE where STATUS = 1;
...@@ -15,3 +15,4 @@ LEFT JOIN AP_PARAM c ON a.CAMPAIGN_TYPE = to_char(c.AP_PARAM_ID); ...@@ -15,3 +15,4 @@ LEFT JOIN AP_PARAM c ON a.CAMPAIGN_TYPE = to_char(c.AP_PARAM_ID);
SELECT max(COMPLETE_VALUE) ,COMPANY_SITE_ID from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = : p_site_id GROUP BY COMPANY_SITE_ID SELECT max(COMPLETE_VALUE) ,COMPANY_SITE_ID from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = : p_site_id GROUP BY COMPANY_SITE_ID
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment