Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
service-campaign
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nguyen Ha
service-campaign
Commits
373e6d79
Commit
373e6d79
authored
Aug 08, 2019
by
Phạm Duy Phi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://git.myitsol.com/hanv/service-campaign
parents
5cbcc652
8a79acf3
Changes
46
Hide whitespace changes
Inline
Side-by-side
Showing
46 changed files
with
1052 additions
and
292 deletions
+1052
-292
campaign.iml
campaign.iml
+0
-17
pom.xml
pom.xml
+12
-0
src/main/java/com/viettel/campaign/model/Campaign.java
src/main/java/com/viettel/campaign/model/Campaign.java
+2
-0
src/main/java/com/viettel/campaign/model/TimeRangeDialMode.java
...in/java/com/viettel/campaign/model/TimeRangeDialMode.java
+2
-0
src/main/java/com/viettel/campaign/model/TimeZoneDialMode.java
...ain/java/com/viettel/campaign/model/TimeZoneDialMode.java
+3
-1
src/main/java/com/viettel/campaign/repository/ApParamRepository.java
...va/com/viettel/campaign/repository/ApParamRepository.java
+1
-0
src/main/java/com/viettel/campaign/repository/ApParamRepositoryCustom.java
.../viettel/campaign/repository/ApParamRepositoryCustom.java
+0
-3
src/main/java/com/viettel/campaign/repository/CampaignCompleteCodeRepository.java
...l/campaign/repository/CampaignCompleteCodeRepository.java
+8
-3
src/main/java/com/viettel/campaign/repository/CampaignCompleteCodeRepositoryCustom.java
...aign/repository/CampaignCompleteCodeRepositoryCustom.java
+2
-0
src/main/java/com/viettel/campaign/repository/CampaignExecuteRepository.java
...iettel/campaign/repository/CampaignExecuteRepository.java
+24
-0
src/main/java/com/viettel/campaign/repository/CampaignRepository.java
...a/com/viettel/campaign/repository/CampaignRepository.java
+4
-0
src/main/java/com/viettel/campaign/repository/CampaignRepositoryCustom.java
...viettel/campaign/repository/CampaignRepositoryCustom.java
+2
-0
src/main/java/com/viettel/campaign/repository/impl/AppParamRepositoryImpl.java
...ttel/campaign/repository/impl/AppParamRepositoryImpl.java
+3
-11
src/main/java/com/viettel/campaign/repository/impl/CampaignCompleteCodeRepositoryIpml.java
...n/repository/impl/CampaignCompleteCodeRepositoryIpml.java
+0
-218
src/main/java/com/viettel/campaign/repository/impl/CampaignCompleteCompleteCodeRepositoryIpml.java
...tory/impl/CampaignCompleteCompleteCodeRepositoryIpml.java
+15
-0
src/main/java/com/viettel/campaign/repository/impl/CampaignExecuteRepositoryImp.java
...ampaign/repository/impl/CampaignExecuteRepositoryImp.java
+233
-0
src/main/java/com/viettel/campaign/repository/impl/CampaignRepositoryImpl.java
...ttel/campaign/repository/impl/CampaignRepositoryImpl.java
+22
-2
src/main/java/com/viettel/campaign/service/ApParamService.java
...ain/java/com/viettel/campaign/service/ApParamService.java
+2
-0
src/main/java/com/viettel/campaign/service/CampaignCompleteCodeService.java
...viettel/campaign/service/CampaignCompleteCodeService.java
+2
-0
src/main/java/com/viettel/campaign/service/CampaignExecuteService.java
.../com/viettel/campaign/service/CampaignExecuteService.java
+19
-0
src/main/java/com/viettel/campaign/service/CampaignService.java
...in/java/com/viettel/campaign/service/CampaignService.java
+4
-0
src/main/java/com/viettel/campaign/service/impl/ApParamServiceImpl.java
...com/viettel/campaign/service/impl/ApParamServiceImpl.java
+0
-2
src/main/java/com/viettel/campaign/service/impl/CampaignCompleteCodeServiceImpl.java
...ampaign/service/impl/CampaignCompleteCodeServiceImpl.java
+64
-11
src/main/java/com/viettel/campaign/service/impl/CampaignExecuteServiceImp.java
...ttel/campaign/service/impl/CampaignExecuteServiceImp.java
+187
-0
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
...om/viettel/campaign/service/impl/CampaignServiceImpl.java
+92
-15
src/main/java/com/viettel/campaign/utils/BundleUtils.java
src/main/java/com/viettel/campaign/utils/BundleUtils.java
+37
-0
src/main/java/com/viettel/campaign/utils/Constants.java
src/main/java/com/viettel/campaign/utils/Constants.java
+12
-0
src/main/java/com/viettel/campaign/web/dto/BaseDTO.java
src/main/java/com/viettel/campaign/web/dto/BaseDTO.java
+1
-0
src/main/java/com/viettel/campaign/web/dto/CampaignDTO.java
src/main/java/com/viettel/campaign/web/dto/CampaignDTO.java
+6
-0
src/main/java/com/viettel/campaign/web/dto/ContactCustResultDTO.java
...va/com/viettel/campaign/web/dto/ContactCustResultDTO.java
+36
-0
src/main/java/com/viettel/campaign/web/dto/TimeZoneDialModeDTO.java
...ava/com/viettel/campaign/web/dto/TimeZoneDialModeDTO.java
+1
-1
src/main/java/com/viettel/campaign/web/dto/request_dto/CampaignRequestDTO.java
...ttel/campaign/web/dto/request_dto/CampaignRequestDTO.java
+16
-0
src/main/java/com/viettel/campaign/web/rest/ApParamController.java
...java/com/viettel/campaign/web/rest/ApParamController.java
+25
-0
src/main/java/com/viettel/campaign/web/rest/CampaignCompleteCodeController.java
...tel/campaign/web/rest/CampaignCompleteCodeController.java
+9
-2
src/main/java/com/viettel/campaign/web/rest/controller/CampaignController.java
...ttel/campaign/web/rest/controller/CampaignController.java
+62
-5
src/main/java/com/viettel/campaign/web/rest/controller/CustomerController.java
...ttel/campaign/web/rest/controller/CustomerController.java
+67
-0
src/main/resources/i18n/language.properties
src/main/resources/i18n/language.properties
+0
-0
src/main/resources/i18n/language_en.properties
src/main/resources/i18n/language_en.properties
+16
-0
src/main/resources/i18n/language_vi.properties
src/main/resources/i18n/language_vi.properties
+16
-0
src/main/resources/sql/campaign-execute/get-combo-campaign-type.sql
...esources/sql/campaign-execute/get-combo-campaign-type.sql
+4
-0
src/main/resources/sql/campaign-execute/get-combo-status.sql
src/main/resources/sql/campaign-execute/get-combo-status.sql
+4
-0
src/main/resources/sql/campaign-execute/get-execute-interactive.sql
...esources/sql/campaign-execute/get-execute-interactive.sql
+28
-0
src/main/resources/sql/campaign-mng/get-max-campaign-code-index.sql
...esources/sql/campaign-mng/get-max-campaign-code-index.sql
+6
-0
src/main/resources/sql/campaign-status-mng/deleteListAll-campaignCompleteCode.sql
...ampaign-status-mng/deleteListAll-campaignCompleteCode.sql
+2
-1
src/main/resources/sql/campaign-status-mng/search-campaign-status-by-params.sql
.../campaign-status-mng/search-campaign-status-by-params.sql
+1
-0
src/main/resources/templates/test_download.xlsx
src/main/resources/templates/test_download.xlsx
+0
-0
No files found.
campaign.iml
deleted
100644 → 0
View file @
5cbcc652
<?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>
</module>
\ No newline at end of file
pom.xml
View file @
373e6d79
...
@@ -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>
...
...
src/main/java/com/viettel/campaign/model/Campaign.java
View file @
373e6d79
...
@@ -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
;
...
...
src/main/java/com/viettel/campaign/model/TimeRangeDialMode.java
View file @
373e6d79
...
@@ -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
;
...
...
src/main/java/com/viettel/campaign/model/TimeZoneDialMode.java
View file @
373e6d79
...
@@ -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
time
Rang
eDialModeId
;
private
Long
time
Zon
eDialModeId
;
@Column
(
name
=
"COMPANY_SITE_ID"
)
@Column
(
name
=
"COMPANY_SITE_ID"
)
private
Long
companySiteId
;
private
Long
companySiteId
;
...
...
src/main/java/com/viettel/campaign/repository/ApParamRepository.java
View file @
373e6d79
...
@@ -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
();
}
}
src/main/java/com/viettel/campaign/repository/ApParamRepositoryCustom.java
View file @
373e6d79
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
{
...
...
src/main/java/com/viettel/campaign/repository/CampaignCompleteCodeRepository.java
View file @
373e6d79
...
@@ -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);
}
}
src/main/java/com/viettel/campaign/repository/CampaignCompleteCodeRepositoryCustom.java
View file @
373e6d79
...
@@ -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
);
}
}
src/main/java/com/viettel/campaign/repository/CampaignExecuteRepository.java
0 → 100644
View file @
373e6d79
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>
}
src/main/java/com/viettel/campaign/repository/CampaignRepository.java
View file @
373e6d79
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
;
...
@@ -16,4 +18,6 @@ public interface CampaignRepository extends JpaRepository<Campaign, Long>, Campa
...
@@ -16,4 +18,6 @@ public interface CampaignRepository extends JpaRepository<Campaign, Long>, Campa
" AND cc.recallTime <= sysdate "
+
" AND cc.recallTime <= sysdate "
+
" AND cc.agentId = :pAgentId"
)
" AND cc.agentId = :pAgentId"
)
Long
countRecallCustomer
(
@Param
(
"pCompanySiteId"
)
Long
pCompanySiteId
,
@Param
(
"pAgentId"
)
Long
pAgentId
);
Long
countRecallCustomer
(
@Param
(
"pCompanySiteId"
)
Long
pCompanySiteId
,
@Param
(
"pAgentId"
)
Long
pAgentId
);
Campaign
findCampaignByCampaignIdAndCompanySiteId
(
Long
campaignId
,
Long
companySiteId
);
}
}
src/main/java/com/viettel/campaign/repository/CampaignRepositoryCustom.java
View file @
373e6d79
...
@@ -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
();
}
}
src/main/java/com/viettel/campaign/repository/impl/AppParamRepositoryImpl.java
View file @
373e6d79
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
()
{
}
}
}
src/main/java/com/viettel/campaign/repository/impl/CampaignCompleteCodeRepositoryIpml.java
deleted
100644 → 0
View file @
5cbcc652
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
;
}
}
src/main/java/com/viettel/campaign/repository/impl/CampaignCompleteCompleteCodeRepositoryIpml.java
View file @
373e6d79
...
@@ -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
;
}
}
}
src/main/java/com/viettel/campaign/repository/impl/CampaignExecuteRepositoryImp.java
0 → 100644
View file @
373e6d79
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
;
}
}
src/main/java/com/viettel/campaign/repository/impl/CampaignRepositoryImpl.java
View file @
373e6d79
...
@@ -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
;
}
}
}
src/main/java/com/viettel/campaign/service/ApParamService.java
View file @
373e6d79
...
@@ -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
();
}
}
src/main/java/com/viettel/campaign/service/CampaignCompleteCodeService.java
View file @
373e6d79
...
@@ -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
);
}
}
src/main/java/com/viettel/campaign/service/CampaignExecuteService.java
0 → 100644
View file @
373e6d79
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>
}
src/main/java/com/viettel/campaign/service/CampaignService.java
View file @
373e6d79
...
@@ -16,4 +16,8 @@ public interface CampaignService {
...
@@ -16,4 +16,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
);
}
}
src/main/java/com/viettel/campaign/service/impl/ApParamServiceImpl.java
View file @
373e6d79
...
@@ -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
)));
...
...
src/main/java/com/viettel/campaign/service/impl/CampaignCompleteCodeServiceImpl.java
View file @
373e6d79
...
@@ -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,21 +129,20 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
...
@@ -123,21 +129,20 @@ 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
();
try
{
completeCodeRepository
.
deleteds
(
completeCodeDtos
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
// for (int i = 0; i < completeCodeDtos.size(); i++) {
}
catch
(
Exception
e
)
{
try
{
resultDTO
.
setErrorCode
(
"-1"
);
completeCodeRepository
.
deleteds
(
completeCodeDtos
);
return
resultDTO
;
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
}
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
}
catch
(
Exception
e
)
{
resultDTO
.
setErrorCode
(
"-1"
);
return
resultDTO
;
}
// }
// }
resultDTO
.
setErrorCode
(
"0"
);
resultDTO
.
setErrorCode
(
"0"
);
...
@@ -158,6 +163,54 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
...
@@ -158,6 +163,54 @@ public class CampaignCompleteCodeServiceImpl implements CampaignCompleteCodeServ
return
result
;
return
result
;
}
}
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;
// }
}
}
src/main/java/com/viettel/campaign/service/impl/CampaignExecuteServiceImp.java
0 → 100644
View file @
373e6d79
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>
}
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
View file @
373e6d79
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.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.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.CampaignDTO
;
import
com.viettel.campaign.web.dto.ResultDTO
;
import
com.viettel.campaign.web.dto.ResultDTO
;
import
com.viettel.campaign.web.dto.TimeRangeDialModeDTO
;
import
com.viettel.campaign.web.dto.TimeZoneDialModeDTO
;
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
;
...
@@ -18,8 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -18,8 +22,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
)
...
@@ -32,6 +35,9 @@ public class CampaignServiceImpl implements CampaignService {
...
@@ -32,6 +35,9 @@ public class CampaignServiceImpl implements CampaignService {
@Autowired
@Autowired
TimeZoneDialModeRepository
timeZoneDialModeRepository
;
TimeZoneDialModeRepository
timeZoneDialModeRepository
;
@Autowired
TimeRangeDialModeRepository
timeRangeDialModeRepository
;
@Autowired
@Autowired
ModelMapper
modelMapper
;
ModelMapper
modelMapper
;
...
@@ -52,29 +58,45 @@ public class CampaignServiceImpl implements CampaignService {
...
@@ -52,29 +58,45 @@ 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
)){
if
(
campaignDTO
.
getLstTimeRange
().
size
()
>
0
)
{
timeZoneDialMode
.
setCompanySiteId
(
campaignDTO
.
getCompanySiteId
());
timeRangeDialModes
=
campaignDTO
.
getLstTimeRange
();
timeZoneDialMode
.
setCampaignId
(
campaign
.
getCampaignId
());
timeRangeDialModes
.
forEach
(
item
->
{
// timeZoneDialMode.setHour(campaignDTO.getT);
item
.
setCampaignId
(
campaignId
);
TimeRangeDialMode
timeRangeDialMode
=
modelMapper
.
map
(
item
,
TimeRangeDialMode
.
class
);
timeZoneDialModeRepository
.
save
(
timeZoneDialMode
);
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
.
set
ErrorCode
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
resultDTO
.
set
Description
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
resultDTO
.
setData
(
campaign
);
resultDTO
.
setData
(
campaign
Result
);
}
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
.
set
ErrorCode
(
Constants
.
ApiErrorDesc
.
ERROR
);
resultDTO
.
set
Description
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
}
return
resultDTO
;
return
resultDTO
;
}
}
...
@@ -97,4 +119,59 @@ public class CampaignServiceImpl implements CampaignService {
...
@@ -97,4 +119,59 @@ 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
);
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
;
}
}
}
src/main/java/com/viettel/campaign/utils/BundleUtils.java
0 → 100644
View file @
373e6d79
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
;
}
}
}
src/main/java/com/viettel/campaign/utils/Constants.java
View file @
373e6d79
...
@@ -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"
;
}
}
}
src/main/java/com/viettel/campaign/web/dto/BaseDTO.java
View file @
373e6d79
...
@@ -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
;
}
}
src/main/java/com/viettel/campaign/web/dto/CampaignDTO.java
View file @
373e6d79
...
@@ -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,10 @@ public class CampaignDTO extends BaseDTO {
...
@@ -57,5 +58,10 @@ 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
;
}
}
src/main/java/com/viettel/campaign/web/dto/ContactCustResultDTO.java
0 → 100644
View file @
373e6d79
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
;
}
src/main/java/com/viettel/campaign/web/dto/TimeZoneDialModeDTO.java
View file @
373e6d79
...
@@ -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
time
Rang
eDialModeId
;
private
Long
time
Zon
eDialModeId
;
private
Long
companySiteId
;
private
Long
companySiteId
;
private
String
hour
;
private
String
hour
;
private
String
minute
;
private
String
minute
;
...
...
src/main/java/com/viettel/campaign/web/dto/request_dto/CampaignRequestDTO.java
View file @
373e6d79
...
@@ -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
;
}
}
src/main/java/com/viettel/campaign/web/rest/ApParamController.java
View file @
373e6d79
...
@@ -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>
}
}
src/main/java/com/viettel/campaign/web/rest/CampaignCompleteCodeController.java
View file @
373e6d79
...
@@ -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
@
Rest
Controller
@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
);
}
}
}
src/main/java/com/viettel/campaign/web/rest/controller/CampaignController.java
View file @
373e6d79
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
;
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.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
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
...
@@ -16,11 +26,14 @@ import java.util.Map;
...
@@ -16,11 +26,14 @@ 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
;
@Autowired
CampaignExecuteService
campaignExecuteService
;
@RequestMapping
(
"/searchCampaignExecute"
)
@RequestMapping
(
"/searchCampaignExecute"
)
@ResponseBody
@ResponseBody
public
ResponseEntity
<
ResultDTO
>
searchCampaignExecute
(
@RequestBody
CampaignRequestDTO
requestDto
)
{
public
ResponseEntity
<
ResultDTO
>
searchCampaignExecute
(
@RequestBody
CampaignRequestDTO
requestDto
)
{
...
@@ -34,14 +47,14 @@ public class CampaignController {
...
@@ -34,14 +47,14 @@ public class CampaignController {
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
}
@RequestMapping
(
value
=
"/find
ByCampaignC
ode"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/find
-by-campaign-c
ode"
,
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
Campaign
Request
DTO
dto
)
{
public
ResultDTO
addNewCampaign
(
@RequestBody
CampaignDTO
dto
)
{
return
campaignService
.
findByCampaignCode
(
dto
);
return
campaignService
.
addNewCampaign
(
dto
);
}
}
@GetMapping
(
"/countRecallCustomer"
)
@GetMapping
(
"/countRecallCustomer"
)
...
@@ -50,4 +63,48 @@ public class CampaignController {
...
@@ -50,4 +63,48 @@ public class CampaignController {
Map
result
=
campaignService
.
countRecallCustomer
(
companySiteId
,
agentId
);
Map
result
=
campaignService
.
countRecallCustomer
(
companySiteId
,
agentId
);
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
);
}
@PostMapping
(
"/changeCampaignStatus"
)
public
ResultDTO
changeCampaignStatus
(
@RequestBody
CampaignDTO
dto
)
{
return
campaignService
.
changeCampaignStatus
(
dto
);
}
}
}
src/main/java/com/viettel/campaign/web/rest/controller/CustomerController.java
View file @
373e6d79
...
@@ -7,13 +7,24 @@ import com.viettel.campaign.service.CustomerService;
...
@@ -7,13 +7,24 @@ import com.viettel.campaign.service.CustomerService;
import
com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO
;
import
com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO
;
import
com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO
;
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.Map
;
import
java.util.Map
;
@Controller
@Controller
...
@@ -159,4 +170,60 @@ public class CustomerController {
...
@@ -159,4 +170,60 @@ public class CustomerController {
ResultDTO
result
=
customerService
.
getCustomerContact
(
customerId
,
contactType
,
contact
);
ResultDTO
result
=
customerService
.
getCustomerContact
(
customerId
,
contactType
,
contact
);
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
);
}
}
}
}
src/main/resources/i18n/language.properties
0 → 100644
View file @
373e6d79
src/main/resources/i18n/language_en.properties
0 → 100644
View file @
373e6d79
#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
src/main/resources/i18n/language_vi.properties
0 → 100644
View file @
373e6d79
#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
src/main/resources/sql/campaign-execute/get-combo-campaign-type.sql
0 → 100644
View file @
373e6d79
select
AP_PARAM_ID
apParamId
,
PAR_NAME
parName
from
AP_PARAM
where
PAR_TYPE
=
'CAMPAIGN_TYPE'
and
COMPANY_SITE_ID
=
:
p_company_site_id
src/main/resources/sql/campaign-execute/get-combo-status.sql
0 → 100644
View file @
373e6d79
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
src/main/resources/sql/campaign-execute/get-execute-interactive.sql
0 → 100644
View file @
373e6d79
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
src/main/resources/sql/campaign-mng/get-max-campaign-code-index.sql
0 → 100644
View file @
373e6d79
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
src/main/resources/sql/campaign-status-mng/deleteListAll-campaignCompleteCode.sql
View file @
373e6d79
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
;
src/main/resources/sql/campaign-status-mng/search-campaign-status-by-params.sql
View file @
373e6d79
...
@@ -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
src/main/resources/templates/test_download.xlsx
0 → 100644
View file @
373e6d79
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment