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
f28c3359
Commit
f28c3359
authored
Aug 19, 2019
by
=
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
hungtt-commit campaign customer list mng
parent
46504149
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
499 additions
and
343 deletions
+499
-343
src/main/java/com/viettel/campaign/repository/ccms_full/CampaignRepositoryCustom.java
...mpaign/repository/ccms_full/CampaignRepositoryCustom.java
+4
-0
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignExecuteRepositoryImp.java
...pository/ccms_full/impl/CampaignExecuteRepositoryImp.java
+85
-323
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignRepositoryImpl.java
...ign/repository/ccms_full/impl/CampaignRepositoryImpl.java
+152
-2
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/CampaignServiceImpl.java
...om/viettel/campaign/service/impl/CampaignServiceImpl.java
+69
-1
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
+17
-17
src/main/java/com/viettel/campaign/web/dto/CustomerCustomDTO.java
.../java/com/viettel/campaign/web/dto/CustomerCustomDTO.java
+4
-0
src/main/java/com/viettel/campaign/web/dto/FieldsToShowDTO.java
...in/java/com/viettel/campaign/web/dto/FieldsToShowDTO.java
+33
-0
src/main/java/com/viettel/campaign/web/dto/request_dto/CampaignRequestDTO.java
...ttel/campaign/web/dto/request_dto/CampaignRequestDTO.java
+5
-0
src/main/java/com/viettel/campaign/web/rest/CampaignController.java
...ava/com/viettel/campaign/web/rest/CampaignController.java
+28
-0
src/main/resources/sql/campaign-execute/get-execute-interactive.sql
...esources/sql/campaign-execute/get-execute-interactive.sql
+41
-0
src/main/resources/sql/campaign-mng/get-list-customer-reallocation.sql
...urces/sql/campaign-mng/get-list-customer-reallocation.sql
+44
-0
src/main/resources/sql/campaign-mng/get-list-fields-not-show.sql
...n/resources/sql/campaign-mng/get-list-fields-not-show.sql
+10
-0
src/main/resources/sql/campaign-mng/get-list-fields-to-show.sql
...in/resources/sql/campaign-mng/get-list-fields-to-show.sql
+3
-0
No files found.
src/main/java/com/viettel/campaign/repository/ccms_full/CampaignRepositoryCustom.java
View file @
f28c3359
...
...
@@ -22,4 +22,8 @@ public interface CampaignRepositoryCustom {
ResultDTO
findCustomerListReallocation
(
CampaignRequestDTO
dto
);
//hungtt
ResultDTO
reallocationCustomer
(
CampaignRequestDTO
dto
);
//hungtt
ResultDTO
getListFieldsNotShow
(
CampaignRequestDTO
dto
);
//hungtt
ResultDTO
getListFieldsToShow
(
CampaignRequestDTO
dto
);
}
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignExecuteRepositoryImp.java
View file @
f28c3359
...
...
@@ -108,213 +108,77 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
public
ResultDTO
getInteractiveResult
(
CampaignRequestDTO
dto
)
{
ResultDTO
resultDTO
=
new
ResultDTO
();
List
<
ContactCustResultDTO
>
list
=
new
ArrayList
<>();
SessionFactory
sessionFactory
=
HibernateUtil
.
getSessionFactory
();
Session
session
=
sessionFactory
.
openSession
();
session
.
beginTransaction
();
// try {
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
// sb.append(sql);
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
" select b.campaign_code campaignCode,"
);
sb
.
append
(
" b.campaign_name campaignName,"
);
sb
.
append
(
" c.user_name userName,"
);
sb
.
append
(
" a.phone_number phoneNumber,"
);
sb
.
append
(
" d.name customerName,"
);
sb
.
append
(
" to_date(a.start_call, 'DD/MM/YYYY') startCall,"
);
sb
.
append
(
" e.complete_name contactStatus,"
);
sb
.
append
(
" f.complete_name surveyStatus,"
);
sb
.
append
(
" g.status status,"
);
sb
.
append
(
" a.status recordStatus,"
);
sb
.
append
(
" (a.end_time - a.start_call)*24*60 callTime"
);
sb
.
append
(
" from contact_cust_result a"
);
sb
.
append
(
" left join campaign b on a.campaign_id = b.campaign_id"
);
sb
.
append
(
" left join vsa_users c on a.agent_id = c.user_id"
);
sb
.
append
(
" left join customer d on a.customer_id = d.customer_id"
);
sb
.
append
(
" left join campaign_complete_code e on a.contact_status = e.complete_value"
);
sb
.
append
(
" left join campaign_complete_code f on a.call_status = e.complete_value"
);
sb
.
append
(
" left join campaign g on a.campaign_id = g.campaign_id"
);
sb
.
append
(
" where a.status <> 0"
);
sb
.
append
(
" and a.company_site_id = :p_company_site_id"
);
sb
.
append
(
" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')"
);
sb
.
append
(
" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')"
);
sb
.
append
(
" and a.duration_call >= :p_call_time_from"
);
sb
.
append
(
" and a.duration_call <= :p_call_time_to"
);
sb
.
append
(
" and b.campaign_type in (:p_list_compaign_type)"
);
sb
.
append
(
" and to_char(a.customer_id) like :p_customer_id"
);
sb
.
append
(
" and to_char(a.contact_status) in (:p_list_contact_status)"
);
sb
.
append
(
" and to_char(a.call_status) in (:p_list_survey_status)"
);
sb
.
append
(
" and to_char(a.status) in (:p_list_record_status)"
);
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getPhoneNumber
()))
{
sb
.
append
(
" and a.phone_number like :p_phone_number"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignId
()))
{
sb
.
append
(
" and b.campaign_code in (:p_list_campaign_id) "
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignName
()))
{
sb
.
append
(
" and upper(b.campaign_name) like :p_campaign_name"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getAgentId
()))
{
sb
.
append
(
" and upper(c.user_name) like :p_user_name"
);
}
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
dto
.
getCompanySiteId
());
query
.
setParameter
(
"p_customer_id"
,
"%"
+
dto
.
getCustomerId
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\%"
)
.
replaceAll
(
"_"
,
"\\_"
)
+
"%"
);
query
.
setParameter
(
"p_date_from"
,
dto
.
getFromDate
());
query
.
setParameter
(
"p_date_to"
,
dto
.
getToDate
());
query
.
setParameterList
(
"p_list_compaign_type"
,
dto
.
getCampaignType
().
split
(
","
));
query
.
setParameterList
(
"p_list_contact_status"
,
dto
.
getContactStatus
().
split
(
","
));
query
.
setParameterList
(
"p_list_survey_status"
,
dto
.
getSurveyStatus
().
split
(
","
));
query
.
setParameterList
(
"p_list_record_status"
,
dto
.
getRecordStatus
().
split
(
","
));
query
.
setParameter
(
"p_call_time_from"
,
dto
.
getCallTimeFrom
());
query
.
setParameter
(
"p_call_time_to"
,
dto
.
getCallTimeTo
());
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignId
()))
{
query
.
setParameterList
(
"p_list_campaign_id"
,
dto
.
getCampaignId
().
split
(
","
));
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getPhoneNumber
()))
{
query
.
setParameter
(
"p_phone_number"
,
"%"
+
dto
.
getPhoneNumber
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\%"
)
.
replaceAll
(
"_"
,
"\\_"
)
+
"%"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignName
()))
{
query
.
setParameter
(
"p_campaign_name"
,
"%"
+
dto
.
getCampaignName
().
toUpperCase
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\%"
)
.
replaceAll
(
"_"
,
"\\_"
)
+
"%"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getAgentId
()))
{
query
.
setParameter
(
"p_user_name"
,
"%"
+
dto
.
getAgentId
().
toUpperCase
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\%"
)
.
replaceAll
(
"_"
,
"\\_"
)
+
"%"
);
}
query
.
addScalar
(
"campaignCode"
,
new
StringType
());
query
.
addScalar
(
"campaignName"
,
new
StringType
());
query
.
addScalar
(
"userName"
,
new
StringType
());
query
.
addScalar
(
"phoneNumber"
,
new
StringType
());
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
.
addScalar
(
"callTime"
,
new
LongType
());
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
);
Map
<
String
,
String
>
params
=
new
HashMap
<>();
try
{
// String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
StringBuilder
sql
=
new
StringBuilder
();
s
b
.
append
(
"with campaign_type_list as ("
);
s
b
.
append
(
" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type"
);
s
b
.
append
(
" from dual"
);
s
b
.
append
(
" connect by level <= regexp_count(:p_list_compaign_type, ',') +1"
);
s
b
.
append
(
" ),"
);
s
b
.
append
(
" contact_status_list as ("
);
s
b
.
append
(
" select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status"
);
s
b
.
append
(
" from dual"
);
s
b
.
append
(
" connect by level <= regexp_count(:p_list_contact_status, ',') +1"
);
s
b
.
append
(
" ),"
);
s
b
.
append
(
" survey_status_list as ("
);
s
b
.
append
(
" select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status"
);
s
b
.
append
(
" from dual"
);
s
b
.
append
(
" connect by level <= regexp_count(:p_list_survey_status, ',') +1"
);
s
b
.
append
(
" ),"
);
s
b
.
append
(
" record_status_list as ("
);
s
b
.
append
(
" select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status"
);
s
b
.
append
(
" from dual"
);
s
b
.
append
(
" connect by level <= regexp_count(:p_list_record_status, ',') +1"
);
s
b
.
append
(
" ),"
);
s
b
.
append
(
" campaign_id_list as ("
);
s
b
.
append
(
" select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id"
);
s
b
.
append
(
" from dual"
);
s
b
.
append
(
" connect by level <= regexp_count(:p_list_campaign_id, ',') +1"
);
s
b
.
append
(
" ),"
);
s
b
.
append
(
" data_temp as ("
);
s
b
.
append
(
" select b.campaign_code campaignCode,"
);
s
b
.
append
(
" b.campaign_name campaignName,"
);
s
b
.
append
(
" c.user_name userName,"
);
s
b
.
append
(
" a.phone_number phoneNumber,"
);
s
b
.
append
(
" d.name customerName,"
);
s
b
.
append
(
" to_date(a.start_call, 'DD/MM/YYYY') startCall,"
);
s
b
.
append
(
" e.complete_name contactStatus,"
);
s
b
.
append
(
" f.complete_name surveyStatus,"
);
s
b
.
append
(
" g.status status,"
);
s
b
.
append
(
" a.status recordStatus,"
);
s
b
.
append
(
" (a.end_time - a.start_call)*24*60 callTime"
);
s
b
.
append
(
" from contact_cust_result a"
);
s
b
.
append
(
" left join campaign b on a.campaign_id = b.campaign_id"
);
s
b
.
append
(
" left join vsa_users c on a.agent_id = c.user_id"
);
s
b
.
append
(
" left join customer d on a.customer_id = d.customer_id"
);
s
b
.
append
(
" left join campaign_complete_code e on a.contact_status = e.complete_value"
);
s
b
.
append
(
" left join campaign_complete_code f on a.call_status = e.complete_value"
);
s
b
.
append
(
" left join campaign g on a.campaign_id = g.campaign_id"
);
s
b
.
append
(
" where a.status <> 0"
);
s
b
.
append
(
" and a.company_site_id = :p_company_site_id"
);
s
b
.
append
(
" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')"
);
s
b
.
append
(
" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')"
);
s
b
.
append
(
" and a.duration_call >= :p_call_time_from"
);
s
b
.
append
(
" and a.duration_call <= :p_call_time_to"
);
s
b
.
append
(
" and to_char(a.customer_id) like '%'||:p_customer_id||'%'"
);
s
b
.
append
(
" and b.campaign_type in (select campaign_type from campaign_type_list)"
);
s
b
.
append
(
" and to_char(a.contact_status) in (select contact_status from contact_status_list)"
);
s
b
.
append
(
" and to_char(a.call_status) in (select survey_status from survey_status_list)"
);
s
b
.
append
(
" and to_char(a.status) in (select record_status from record_status_list)"
);
s
b
.
append
(
" and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')"
);
s
b
.
append
(
" and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))"
);
s
b
.
append
(
" and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')"
);
s
b
.
append
(
" and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')"
);
s
b
.
append
(
" ),"
);
s
b
.
append
(
" data as ("
);
s
b
.
append
(
" select a.*, rownum row_ from data_temp a"
);
s
b
.
append
(
" )"
);
s
b
.
append
(
" select * from data"
);
s
b
.
append
(
" where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))"
);
s
ql
.
append
(
"with campaign_type_list as ("
);
s
ql
.
append
(
" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type"
);
s
ql
.
append
(
" from dual"
);
s
ql
.
append
(
" connect by level <= regexp_count(:p_list_compaign_type, ',') +1"
);
s
ql
.
append
(
" ),"
);
s
ql
.
append
(
" contact_status_list as ("
);
s
ql
.
append
(
" select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status"
);
s
ql
.
append
(
" from dual"
);
s
ql
.
append
(
" connect by level <= regexp_count(:p_list_contact_status, ',') +1"
);
s
ql
.
append
(
" ),"
);
s
ql
.
append
(
" survey_status_list as ("
);
s
ql
.
append
(
" select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status"
);
s
ql
.
append
(
" from dual"
);
s
ql
.
append
(
" connect by level <= regexp_count(:p_list_survey_status, ',') +1"
);
s
ql
.
append
(
" ),"
);
s
ql
.
append
(
" record_status_list as ("
);
s
ql
.
append
(
" select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status"
);
s
ql
.
append
(
" from dual"
);
s
ql
.
append
(
" connect by level <= regexp_count(:p_list_record_status, ',') +1"
);
s
ql
.
append
(
" ),"
);
s
ql
.
append
(
" campaign_id_list as ("
);
s
ql
.
append
(
" select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id"
);
s
ql
.
append
(
" from dual"
);
s
ql
.
append
(
" connect by level <= regexp_count(:p_list_campaign_id, ',') +1"
);
s
ql
.
append
(
" ),"
);
s
ql
.
append
(
" data_temp as ("
);
s
ql
.
append
(
" select b.campaign_code campaignCode,"
);
s
ql
.
append
(
" b.campaign_name campaignName,"
);
s
ql
.
append
(
" c.user_name userName,"
);
s
ql
.
append
(
" a.phone_number phoneNumber,"
);
s
ql
.
append
(
" d.name customerName,"
);
s
ql
.
append
(
" to_date(a.start_call, 'DD/MM/YYYY') startCall,"
);
s
ql
.
append
(
" e.complete_name contactStatus,"
);
s
ql
.
append
(
" f.complete_name surveyStatus,"
);
s
ql
.
append
(
" g.status status,"
);
s
ql
.
append
(
" a.status recordStatus,"
);
s
ql
.
append
(
" (a.end_time - a.start_call)*24*60 callTime"
);
s
ql
.
append
(
" from contact_cust_result a"
);
s
ql
.
append
(
" left join campaign b on a.campaign_id = b.campaign_id"
);
s
ql
.
append
(
" left join vsa_users c on a.agent_id = c.user_id"
);
s
ql
.
append
(
" left join customer d on a.customer_id = d.customer_id"
);
s
ql
.
append
(
" left join campaign_complete_code e on a.contact_status = e.complete_value"
);
s
ql
.
append
(
" left join campaign_complete_code f on a.call_status = e.complete_value"
);
s
ql
.
append
(
" left join campaign g on a.campaign_id = g.campaign_id"
);
s
ql
.
append
(
" where a.status <> 0"
);
s
ql
.
append
(
" and a.company_site_id = :p_company_site_id"
);
s
ql
.
append
(
" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')"
);
s
ql
.
append
(
" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')"
);
s
ql
.
append
(
" and a.duration_call >= :p_call_time_from"
);
s
ql
.
append
(
" and a.duration_call <= :p_call_time_to"
);
s
ql
.
append
(
" and to_char(a.customer_id) like '%'||:p_customer_id||'%'"
);
s
ql
.
append
(
" and b.campaign_type in (select campaign_type from campaign_type_list)"
);
s
ql
.
append
(
" and to_char(a.contact_status) in (select contact_status from contact_status_list)"
);
s
ql
.
append
(
" and to_char(a.call_status) in (select survey_status from survey_status_list)"
);
s
ql
.
append
(
" and to_char(a.status) in (select record_status from record_status_list)"
);
s
ql
.
append
(
" and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')"
);
s
ql
.
append
(
" and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))"
);
s
ql
.
append
(
" and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')"
);
s
ql
.
append
(
" and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')"
);
s
ql
.
append
(
" ),"
);
s
ql
.
append
(
" data as ("
);
s
ql
.
append
(
" select a.*, rownum row_ from data_temp a"
);
s
ql
.
append
(
" )"
);
s
ql
.
append
(
" select * from data"
);
s
ql
.
append
(
" where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))"
);
params
.
put
(
"p_company_site_id"
,
dto
.
getCompanySiteId
());
params
.
put
(
"p_customer_id"
,
dto
.
getCustomerId
());
...
...
@@ -327,12 +191,27 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params
.
put
(
"p_call_time_from"
,
dto
.
getCallTimeFrom
());
params
.
put
(
"p_list_campaign_id"
,
dto
.
getCallTimeTo
());
params
.
put
(
"p_phone_number"
,
dto
.
getPhoneNumber
());
params
.
put
(
"p_campaign_name"
,
dto
.
getCampaignName
().
toUpperCase
());
params
.
put
(
"p_campaign_name"
,
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignName
())
?
null
:
dto
.
getCampaignName
().
toUpperCase
());
params
.
put
(
"p_user_name"
,
dto
.
getAgentId
().
toUpperCase
());
params
.
put
(
"p_page_number"
,
dto
.
getPage
().
toString
());
params
.
put
(
"p_page_size"
,
dto
.
getPageSize
().
toString
());
list
=
namedParameterJdbcTemplate
.
query
(
sql
.
toString
(),
params
,
BeanPropertyRowMapper
.
newInstance
(
ContactCustResultDTO
.
class
));
for
(
ContactCustResultDTO
contactCustResultDTO
:
list
)
{
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
);
}
}
}
resultDTO
.
setListData
(
list
);
resultDTO
.
setTotalRow
(
list
.
size
());
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
...
...
@@ -342,132 +221,16 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
finally
{
}
// }
return
resultDTO
;
}
}
@Override
public
List
<
ContactCustResultDTO
>
getExcelInteractiveResult
(
CampaignRequestDTO
dto
)
{
List
<
ContactCustResultDTO
>
list
=
new
ArrayList
<>();
SessionFactory
sessionFactory
=
HibernateUtil
.
getSessionFactory
();
Session
session
=
sessionFactory
.
openSession
();
session
.
beginTransaction
();
// try {
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
//sb.append(sql);
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"select b.campaign_code campaignCode,"
);
sb
.
append
(
" b.campaign_name campaignName,"
);
sb
.
append
(
" c.user_name userName,"
);
sb
.
append
(
" a.phone_number phoneNumber,"
);
sb
.
append
(
" d.name customerName,"
);
sb
.
append
(
" to_date(a.start_call, 'DD/MM/YYYY') startCall,"
);
sb
.
append
(
" e.complete_name contactStatus,"
);
sb
.
append
(
" f.complete_name surveyStatus,"
);
sb
.
append
(
" g.status status,"
);
sb
.
append
(
" a.status recordStatus,"
);
sb
.
append
(
" (a.end_time - a.start_call)*24*60 callTime"
);
sb
.
append
(
" from contact_cust_result a"
);
sb
.
append
(
" left join campaign b on a.campaign_id = b.campaign_id"
);
sb
.
append
(
" left join vsa_users c on a.agent_id = c.user_id"
);
sb
.
append
(
" left join customer d on a.customer_id = d.customer_id"
);
sb
.
append
(
" left join campaign_complete_code e on a.contact_status = e.complete_value"
);
sb
.
append
(
" left join campaign_complete_code f on a.call_status = e.complete_value"
);
sb
.
append
(
" left join campaign g on a.campaign_id = g.campaign_id"
);
sb
.
append
(
" where a.status <> 0"
);
sb
.
append
(
" and a.company_site_id = :p_company_site_id"
);
sb
.
append
(
" and a.create_time >= to_date(:p_date_from, 'DD/MM/YYYY')"
);
sb
.
append
(
" and a.create_time <= to_date(:p_date_to, 'DD/MM/YYYY')"
);
sb
.
append
(
" and a.duration_call >= :p_call_time_from"
);
sb
.
append
(
" and a.duration_call <= :p_call_time_to"
);
sb
.
append
(
" and b.campaign_type in (:p_list_compaign_type)"
);
sb
.
append
(
" and to_char(a.customer_id) like :p_customer_id"
);
sb
.
append
(
" and to_char(a.contact_status) in (:p_list_contact_status)"
);
sb
.
append
(
" and to_char(a.call_status) in (:p_list_survey_status)"
);
sb
.
append
(
" and to_char(a.status) in (:p_list_record_status)"
);
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getPhoneNumber
()))
{
sb
.
append
(
" and a.phone_number like :p_phone_number"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignId
()))
{
sb
.
append
(
" and b.campaign_code in (:p_list_campaign_id) "
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignName
()))
{
sb
.
append
(
" and upper(b.campaign_name) like :p_campaign_name"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getAgentId
()))
{
sb
.
append
(
" and upper(c.user_name) like :p_user_name"
);
}
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
dto
.
getCompanySiteId
());
query
.
setParameter
(
"p_customer_id"
,
"%"
+
dto
.
getCustomerId
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\%"
)
.
replaceAll
(
"_"
,
"\\_"
)
+
"%"
);
query
.
setParameter
(
"p_date_from"
,
dto
.
getFromDate
());
query
.
setParameter
(
"p_date_to"
,
dto
.
getToDate
());
query
.
setParameterList
(
"p_list_compaign_type"
,
dto
.
getCampaignType
().
split
(
","
));
query
.
setParameterList
(
"p_list_contact_status"
,
dto
.
getContactStatus
().
split
(
","
));
query
.
setParameterList
(
"p_list_survey_status"
,
dto
.
getSurveyStatus
().
split
(
","
));
query
.
setParameterList
(
"p_list_record_status"
,
dto
.
getRecordStatus
().
split
(
","
));
query
.
setParameter
(
"p_call_time_from"
,
dto
.
getCallTimeFrom
());
query
.
setParameter
(
"p_call_time_to"
,
dto
.
getCallTimeTo
());
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignId
()))
{
query
.
setParameterList
(
"p_list_campaign_id"
,
dto
.
getCampaignId
().
split
(
","
));
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getPhoneNumber
()))
{
query
.
setParameter
(
"p_phone_number"
,
"%"
+
dto
.
getPhoneNumber
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\%"
)
.
replaceAll
(
"_"
,
"\\_"
)
+
"%"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignName
()))
{
query
.
setParameter
(
"p_campaign_name"
,
"%"
+
dto
.
getCampaignName
().
toUpperCase
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\%"
)
.
replaceAll
(
"_"
,
"\\_"
)
+
"%"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
dto
.
getAgentId
()))
{
query
.
setParameter
(
"p_user_name"
,
"%"
+
dto
.
getAgentId
().
toUpperCase
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\%"
)
.
replaceAll
(
"_"
,
"\\_"
)
+
"%"
);
}
query
.
addScalar
(
"campaignCode"
,
new
StringType
());
query
.
addScalar
(
"campaignName"
,
new
StringType
());
query
.
addScalar
(
"userName"
,
new
StringType
());
query
.
addScalar
(
"phoneNumber"
,
new
StringType
());
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
.
addScalar
(
"callTime"
,
new
LongType
());
query
.
setResultTransformer
(
Transformers
.
aliasToBean
(
ContactCustResultDTO
.
class
));
list
=
query
.
list
();
Map
<
String
,
String
>
params
=
new
HashMap
<>();
try
{
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder
sb2
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"with campaign_type_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type"
);
...
...
@@ -535,7 +298,6 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
sb
.
append
(
" select * from data"
);
sb
.
append
(
" where :p_page_size = 0 or (row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1))"
);
params
.
put
(
"p_company_site_id"
,
dto
.
getCompanySiteId
());
params
.
put
(
"p_customer_id"
,
dto
.
getCustomerId
());
params
.
put
(
"p_date_from"
,
dto
.
getFromDate
());
...
...
@@ -547,12 +309,12 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params
.
put
(
"p_call_time_from"
,
dto
.
getCallTimeFrom
());
params
.
put
(
"p_list_campaign_id"
,
dto
.
getCallTimeTo
());
params
.
put
(
"p_phone_number"
,
dto
.
getPhoneNumber
());
params
.
put
(
"p_campaign_name"
,
dto
.
getCampaignName
().
toUpperCase
());
params
.
put
(
"p_campaign_name"
,
DataUtil
.
isNullOrEmpty
(
dto
.
getCampaignName
())
?
null
:
dto
.
getCampaignName
().
toUpperCase
());
params
.
put
(
"p_user_name"
,
dto
.
getAgentId
().
toUpperCase
());
params
.
put
(
"p_page_number"
,
dto
.
getPage
().
toString
());
params
.
put
(
"p_page_size"
,
"0"
);
list
=
namedParameterJdbcTemplate
.
query
(
sb
2
.
toString
(),
params
,
BeanPropertyRowMapper
.
newInstance
(
ContactCustResultDTO
.
class
));
list
=
namedParameterJdbcTemplate
.
query
(
sb
.
toString
(),
params
,
BeanPropertyRowMapper
.
newInstance
(
ContactCustResultDTO
.
class
));
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
finally
{
...
...
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignRepositoryImpl.java
View file @
f28c3359
...
...
@@ -9,6 +9,7 @@ import com.viettel.campaign.utils.HibernateUtil;
import
com.viettel.campaign.utils.SQLBuilder
;
import
com.viettel.campaign.web.dto.CampaignDTO
;
import
com.viettel.campaign.web.dto.CustomerCustomDTO
;
import
com.viettel.campaign.web.dto.FieldsToShowDTO
;
import
com.viettel.campaign.web.dto.ResultDTO
;
import
com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO
;
import
org.apache.logging.log4j.LogManager
;
...
...
@@ -408,13 +409,162 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
}
@Override
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
findCustomerListReallocation
(
CampaignRequestDTO
dto
)
{
return
null
;
ResultDTO
resultDTO
=
new
ResultDTO
();
List
<
CustomerCustomDTO
>
list
=
new
ArrayList
<>();
Map
<
String
,
String
>
params
=
new
HashMap
<>();
StringBuilder
stringBuilder
=
new
StringBuilder
();
try
{
// String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-list-customer-reallocation");
stringBuilder
.
append
(
" with contact as ("
);
stringBuilder
.
append
(
" select customer_id, contact"
);
stringBuilder
.
append
(
" from ("
);
stringBuilder
.
append
(
" select * from customer_contact"
);
stringBuilder
.
append
(
" where status = 1"
);
stringBuilder
.
append
(
" and contact_type = 5"
);
stringBuilder
.
append
(
" and is_direct_line = 1"
);
stringBuilder
.
append
(
" order by create_date desc"
);
stringBuilder
.
append
(
" )"
);
stringBuilder
.
append
(
" where rownum = 1"
);
stringBuilder
.
append
(
" ),"
);
stringBuilder
.
append
(
" connect_status as ("
);
stringBuilder
.
append
(
" select complete_value, complete_name"
);
stringBuilder
.
append
(
" from campaign_complete_code"
);
stringBuilder
.
append
(
" where company_site_id = :p_company_site_id"
);
stringBuilder
.
append
(
" and complete_type = 1"
);
stringBuilder
.
append
(
" and complete_value <> 1"
);
stringBuilder
.
append
(
" ),"
);
stringBuilder
.
append
(
" connect_status_list as ("
);
stringBuilder
.
append
(
" select trim (regexp_substr(:p_list_connect_status, '[^,]+', 1, level)) connect_status"
);
stringBuilder
.
append
(
" from dual"
);
stringBuilder
.
append
(
" connect by level <= regexp_count(:p_list_connect_status, ',') +1"
);
stringBuilder
.
append
(
" ),"
);
stringBuilder
.
append
(
" data as ("
);
stringBuilder
.
append
(
" select a.campaign_customer_id campaignCustomerId,"
);
stringBuilder
.
append
(
" b.name customerName,"
);
stringBuilder
.
append
(
" c.contact mobileNumber,"
);
stringBuilder
.
append
(
" to_char(a.call_time, 'DD/MM/YYYY HH24:MI:SS') connectTime,"
);
stringBuilder
.
append
(
" d.complete_name connectStatus"
);
stringBuilder
.
append
(
" from campaign_customer a"
);
stringBuilder
.
append
(
" left join customer b on a.customer_id = b.customer_id"
);
stringBuilder
.
append
(
" left join contact c on a.customer_id = c.customer_id"
);
stringBuilder
.
append
(
" left join connect_status d on d.complete_value = a.status"
);
stringBuilder
.
append
(
" where a.campaign_id = :p_campaign_id"
);
stringBuilder
.
append
(
" and a.in_campaign_status = 1"
);
stringBuilder
.
append
(
" and a.status in (select connect_status from connect_status_list)"
);
stringBuilder
.
append
(
" order by connectTime desc, customerName"
);
stringBuilder
.
append
(
" ),"
);
stringBuilder
.
append
(
" final_data as ("
);
stringBuilder
.
append
(
" select a.*, rownum row_ from data a"
);
stringBuilder
.
append
(
" )"
);
stringBuilder
.
append
(
" select * from final_data"
);
stringBuilder
.
append
(
" where row_ >= ((:p_page_number - 1) * :p_page_size + 1)"
);
stringBuilder
.
append
(
" and row_ < (:p_page_number * :p_page_size + 1)"
);
params
.
put
(
"p_company_site_id"
,
dto
.
getCompanySiteId
());
params
.
put
(
"p_campaign_id"
,
dto
.
getCampaignId
());
params
.
put
(
"p_list_connect_status"
,
dto
.
getConnectStatus
());
params
.
put
(
"p_page_size"
,
dto
.
getPageSize
().
toString
());
params
.
put
(
"p_page_number"
,
dto
.
getPage
().
toString
());
list
=
namedParameterJdbcTemplate
.
query
(
stringBuilder
.
toString
(),
params
,
BeanPropertyRowMapper
.
newInstance
(
CustomerCustomDTO
.
class
));
resultDTO
.
setListData
(
list
);
resultDTO
.
setTotalRow
(
list
.
size
());
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
return
resultDTO
;
}
@Override
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
reallocationCustomer
(
CampaignRequestDTO
dto
)
{
return
null
;
ResultDTO
resultDTO
=
new
ResultDTO
();
try
{
List
<
CustomerCustomDTO
>
list
=
dto
.
getCustomerCustomDTOList
();
for
(
CustomerCustomDTO
customerCustomDTO:
list
)
{
CampaignCustomer
campaignCustomer
=
entityManager
.
find
(
CampaignCustomer
.
class
,
customerCustomDTO
.
getCampaignCustomerId
());
campaignCustomer
.
setStatus
((
short
)
0
);
campaignCustomer
.
setCallStatus
(
null
);
campaignCustomer
.
setRedistribute
((
short
)
1
);
}
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
return
resultDTO
;
}
@Override
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
getListFieldsNotShow
(
CampaignRequestDTO
dto
)
{
ResultDTO
resultDTO
=
new
ResultDTO
();
Map
<
String
,
String
>
params
=
new
HashMap
<>();
List
<
FieldsToShowDTO
>
list
=
new
ArrayList
<>();
StringBuilder
stringBuilder
=
new
StringBuilder
();
try
{
// String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-list-fields-not-show");
stringBuilder
.
append
(
" with column_name_temp as ("
);
stringBuilder
.
append
(
" select column_name columnName, 1 isFix from user_tab_columns, dual"
);
stringBuilder
.
append
(
" where table_name = 'CUSTOMER'"
);
stringBuilder
.
append
(
" )"
);
stringBuilder
.
append
(
" select * from column_name_temp"
);
stringBuilder
.
append
(
" where columnName not in (select column_name from campaign_customerlist_column)"
);
stringBuilder
.
append
(
" union all"
);
stringBuilder
.
append
(
" select title columnName, 0 isFix "
);
stringBuilder
.
append
(
" from customize_fields, dual"
);
stringBuilder
.
append
(
" where function_code = 'CUSTOMER'"
);
stringBuilder
.
append
(
" and site_id = :p_company_site_id"
);
stringBuilder
.
append
(
" and customize_field_id not in (select customize_field_id"
);
stringBuilder
.
append
(
" from campaign_customerlist_column"
);
stringBuilder
.
append
(
" where campaign_customerlist_column.campaign_id = :p_campaign_id)"
);
params
.
put
(
"p_company_site_id"
,
dto
.
getCompanySiteId
());
params
.
put
(
"p_campaign_id"
,
dto
.
getCampaignId
());
list
=
namedParameterJdbcTemplate
.
query
(
stringBuilder
.
toString
(),
params
,
BeanPropertyRowMapper
.
newInstance
(
FieldsToShowDTO
.
class
));
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
resultDTO
.
setListData
(
list
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
return
resultDTO
;
}
@Override
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
getListFieldsToShow
(
CampaignRequestDTO
dto
)
{
ResultDTO
resultDTO
=
new
ResultDTO
();
Map
<
String
,
String
>
params
=
new
HashMap
<>();
List
<
FieldsToShowDTO
>
list
=
new
ArrayList
<>();
StringBuilder
sqlBuilder
=
new
StringBuilder
();
try
{
// String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-list-fields-to-show");
sqlBuilder
.
append
(
" select to_char(column_name) columnName, 1 isFix"
);
sqlBuilder
.
append
(
" from campaign_customerlist_column, dual"
);
sqlBuilder
.
append
(
" where campaign_id = :p_campaign_id"
);
sqlBuilder
.
append
(
" union all"
);
sqlBuilder
.
append
(
" select customize_field_title columnName, 0 isFix"
);
sqlBuilder
.
append
(
" from campaign_customerlist_column"
);
sqlBuilder
.
append
(
" where campaign_id = :p_campaign_id"
);
params
.
put
(
"p_campaign_id"
,
dto
.
getCampaignId
());
list
=
namedParameterJdbcTemplate
.
query
(
sqlBuilder
.
toString
(),
params
,
BeanPropertyRowMapper
.
newInstance
(
FieldsToShowDTO
.
class
));
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
resultDTO
.
setListData
(
list
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
return
resultDTO
;
}
}
src/main/java/com/viettel/campaign/service/CampaignService.java
View file @
f28c3359
...
...
@@ -52,5 +52,9 @@ public interface CampaignService {
ResultDTO
findCustomerListReallocation
(
CampaignRequestDTO
dto
);
ResultDTO
reallocationCustomer
(
CampaignRequestDTO
dto
);
ResultDTO
getListFieldsNotShow
(
CampaignRequestDTO
dto
);
ResultDTO
getListFieldsToShow
(
CampaignRequestDTO
dto
);
//</editor-fold>
}
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
View file @
f28c3359
...
...
@@ -390,9 +390,9 @@ public class CampaignServiceImpl implements CampaignService {
ResultDTO
resultDTO
=
new
ResultDTO
();
List
<
TimeZoneDialModeDTO
>
lstTimeZone
=
dto
.
getLstTimeZone
();
List
<
TimeRangeDialModeDTO
>
lstTimeRange
=
dto
.
getLstTimeRange
();
// Campaign campaignEntity = modelMapper.map(dto, Campaign.class);
Campaign
campaignEntity
=
new
Campaign
();
campaignEntity
.
setCampaignId
(
dto
.
getCampaignId
());
campaignEntity
.
setCampaignCode
(
dto
.
getCampaignCode
());
campaignEntity
.
setContent
(
dto
.
getContent
());
campaignEntity
.
setCustomerNumber
(
dto
.
getCustomerNumber
());
campaignEntity
.
setStartTime
(
dto
.
getStartTime
());
...
...
@@ -458,6 +458,74 @@ public class CampaignServiceImpl implements CampaignService {
return
campaignRepositoryCustom
.
reallocationCustomer
(
dto
);
}
// hungtt
@Override
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
getListFieldsNotShow
(
CampaignRequestDTO
dto
)
{
Locale
locale
=
Locale
.
forLanguageTag
(
"vi"
);
Map
<
String
,
String
>
mapColumn
=
new
HashMap
<>();
mapColumn
=
setMapData
(
mapColumn
,
locale
);
ResultDTO
resultDTO
=
campaignRepositoryCustom
.
getListFieldsNotShow
(
dto
);
List
<
FieldsToShowDTO
>
list
=
(
List
<
FieldsToShowDTO
>)
resultDTO
.
getListData
();
for
(
FieldsToShowDTO
fieldsToShowDTO
:
list
)
{
if
(
fieldsToShowDTO
.
getIsFix
())
{
fieldsToShowDTO
.
setColumnTitle
(
mapColumn
.
get
(
fieldsToShowDTO
.
getColumnName
()));
}
else
{
fieldsToShowDTO
.
setColumnTitle
(
fieldsToShowDTO
.
getColumnName
());
}
}
resultDTO
.
setListData
(
list
);
return
resultDTO
;
}
// hungtt
@Override
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
getListFieldsToShow
(
CampaignRequestDTO
dto
)
{
Locale
locale
=
Locale
.
forLanguageTag
(
"vi"
);
Map
<
String
,
String
>
mapColumn
=
new
HashMap
<>();
mapColumn
=
setMapData
(
mapColumn
,
locale
);
ResultDTO
resultDTO
=
campaignRepositoryCustom
.
getListFieldsToShow
(
dto
);
List
<
FieldsToShowDTO
>
list
=
(
List
<
FieldsToShowDTO
>)
resultDTO
.
getListData
();
for
(
FieldsToShowDTO
fieldsToShowDTO
:
list
)
{
if
(
fieldsToShowDTO
.
getIsFix
())
{
fieldsToShowDTO
.
setColumnTitle
(
mapColumn
.
get
(
fieldsToShowDTO
.
getColumnName
()));
}
else
{
fieldsToShowDTO
.
setColumnTitle
(
fieldsToShowDTO
.
getColumnName
());
}
}
resultDTO
.
setListData
(
list
);
return
resultDTO
;
}
// hungtt
private
Map
<
String
,
String
>
setMapData
(
Map
<
String
,
String
>
mapColumn
,
Locale
locale
)
{
mapColumn
.
put
(
"CUSTOMER_ID"
,
BundleUtils
.
getLangString
(
"CUSTOMER_ID"
,
locale
));
mapColumn
.
put
(
"CODE"
,
BundleUtils
.
getLangString
(
"CODE"
,
locale
));
mapColumn
.
put
(
"NAME"
,
BundleUtils
.
getLangString
(
"NAME"
,
locale
));
mapColumn
.
put
(
"DESCRIPTION"
,
BundleUtils
.
getLangString
(
"DESCRIPTION"
,
locale
));
mapColumn
.
put
(
"COMPANY_NAME"
,
BundleUtils
.
getLangString
(
"COMPANY_NAME"
,
locale
));
mapColumn
.
put
(
"CUSTOMER_IMG"
,
BundleUtils
.
getLangString
(
"CUSTOMER_IMG"
,
locale
));
mapColumn
.
put
(
"CREATE_DATE"
,
BundleUtils
.
getLangString
(
"CREATE_DATE"
,
locale
));
mapColumn
.
put
(
"UPDATE_DATE"
,
BundleUtils
.
getLangString
(
"UPDATE_DATE"
,
locale
));
mapColumn
.
put
(
"STATUS"
,
BundleUtils
.
getLangString
(
"STATUS"
,
locale
));
mapColumn
.
put
(
"CREATE_BY"
,
BundleUtils
.
getLangString
(
"CREATE_BY"
,
locale
));
mapColumn
.
put
(
"UPDATE_BY"
,
BundleUtils
.
getLangString
(
"UPDATE_BY"
,
locale
));
mapColumn
.
put
(
"SITE_ID"
,
BundleUtils
.
getLangString
(
"SITE_ID"
,
locale
));
mapColumn
.
put
(
"GENDER"
,
BundleUtils
.
getLangString
(
"GENDER"
,
locale
));
mapColumn
.
put
(
"CURRENT_ADDRESS"
,
BundleUtils
.
getLangString
(
"CURRENT_ADDRESS"
,
locale
));
mapColumn
.
put
(
"PLACE_OF_BIRTH"
,
BundleUtils
.
getLangString
(
"PLACE_OF_BIRTH"
,
locale
));
mapColumn
.
put
(
"DATE_OF_BIRTH"
,
BundleUtils
.
getLangString
(
"DATE_OF_BIRTH"
,
locale
));
mapColumn
.
put
(
"MOBILE_NUMBER"
,
BundleUtils
.
getLangString
(
"MOBILE_NUMBER"
,
locale
));
mapColumn
.
put
(
"USERNAME"
,
BundleUtils
.
getLangString
(
"USERNAME"
,
locale
));
mapColumn
.
put
(
"AREA_CODE"
,
BundleUtils
.
getLangString
(
"AREA_CODE"
,
locale
));
mapColumn
.
put
(
"CALL_ALLOWED"
,
BundleUtils
.
getLangString
(
"CALL_ALLOWED"
,
locale
));
mapColumn
.
put
(
"EMAIL_ALLOWED"
,
BundleUtils
.
getLangString
(
"EMAIL_ALLOWED"
,
locale
));
mapColumn
.
put
(
"SMS_ALLOWED"
,
BundleUtils
.
getLangString
(
"SMS_ALLOWED"
,
locale
));
mapColumn
.
put
(
"IPCC_STATUS"
,
BundleUtils
.
getLangString
(
"IPCC_STATUS"
,
locale
));
return
mapColumn
;
}
private
String
generateCampaignCode
(
String
campaignType
,
Short
chanel
)
{
int
year
=
Calendar
.
getInstance
().
get
(
Calendar
.
YEAR
);
String
maxIndexStr
=
campaignRepositoryCustom
.
getMaxCampaignIndex
();
...
...
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
View file @
f28c3359
...
...
@@ -18,23 +18,23 @@ public class SQLBuilder {
public
static
final
String
SQL_MODULE_CAMPAIGN_STATUS_MNG
=
"campaign-status-mng"
;
public
static
final
String
SQL_MODULE_CAMPAIGN_CUSTOMER_MNG
=
"campaign-customer-mng"
;
//
public static String getSqlQueryById(String module,
//
String queryId) {
//
File folder = null;
//
try {
//
folder = new ClassPathResource(
//
"sql" + File.separator + module + File.separator + queryId + ".sql").getFile();
//
//
// Read file
//
if (folder.isFile()) {
//
String sql = new String(Files.readAllBytes(Paths.get(folder.getAbsolutePath())));
//
return sql;
//
}
//
} catch (IOException e) {
//
return null;
//
}
//
return null;
//
}
public
static
String
getSqlQueryById
(
String
module
,
String
queryId
)
{
File
folder
=
null
;
try
{
folder
=
new
ClassPathResource
(
"sql"
+
File
.
separator
+
module
+
File
.
separator
+
queryId
+
".sql"
).
getFile
();
// Read file
if
(
folder
.
isFile
())
{
String
sql
=
new
String
(
Files
.
readAllBytes
(
Paths
.
get
(
folder
.
getAbsolutePath
())));
return
sql
;
}
}
catch
(
IOException
e
)
{
return
null
;
}
return
null
;
}
public
static
Pageable
buildPageable
(
BaseDTO
obj
)
{
Pageable
pageable
=
null
;
...
...
src/main/java/com/viettel/campaign/web/dto/CustomerCustomDTO.java
View file @
f28c3359
...
...
@@ -21,4 +21,8 @@ public class CustomerCustomDTO {
String
ipccStatus
;
String
mobileNumber
;
String
email
;
String
connectStatus
;
String
connectTime
;
String
customerName
;
Long
campaignCustomerId
;
}
src/main/java/com/viettel/campaign/web/dto/FieldsToShowDTO.java
0 → 100644
View file @
f28c3359
package
com.viettel.campaign.web.dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.io.Serializable
;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public
class
FieldsToShowDTO
extends
BaseDTO
implements
Serializable
{
private
Long
campaignCusListColId
;
private
Long
companySiteId
;
private
Long
campaignId
;
private
String
columnName
;
private
String
columnTitle
;
private
Long
orderIndex
;
private
Long
customizeFieldId
;
private
String
customizeFieldTitle
;
private
Boolean
isFix
;
}
src/main/java/com/viettel/campaign/web/dto/request_dto/CampaignRequestDTO.java
View file @
f28c3359
package
com.viettel.campaign.web.dto.request_dto
;
import
com.viettel.campaign.web.dto.BaseDTO
;
import
com.viettel.campaign.web.dto.CustomerCustomDTO
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.List
;
/**
* @author anhvd_itsol
*/
...
...
@@ -42,4 +45,6 @@ public class CampaignRequestDTO extends BaseDTO {
String
surveyStatus
;
String
roleUser
;
String
contactCustId
;
List
<
CustomerCustomDTO
>
customerCustomDTOList
;
}
src/main/java/com/viettel/campaign/web/rest/CampaignController.java
View file @
f28c3359
...
...
@@ -191,4 +191,32 @@ public class CampaignController {
ResultDTO
resultDTO
=
campaignService
.
updateCampaign
(
dto
);
return
new
ResponseEntity
<>(
resultDTO
,
HttpStatus
.
OK
);
}
@PostMapping
(
"/findCustomerListReallocation"
)
@ResponseBody
public
ResponseEntity
<?>
findCustomerListReallocation
(
@RequestBody
CampaignRequestDTO
dto
)
{
ResultDTO
result
=
campaignService
.
findCustomerListReallocation
(
dto
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
@PostMapping
(
"/reallocationCustomer"
)
@ResponseBody
public
ResponseEntity
<?>
reallocationCustomer
(
@RequestBody
CampaignRequestDTO
dto
)
{
ResultDTO
result
=
campaignService
.
reallocationCustomer
(
dto
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
@PostMapping
(
"/getListFieldsNotShow"
)
@ResponseBody
public
ResponseEntity
<?>
getListFieldsNotShow
(
@RequestBody
CampaignRequestDTO
dto
)
{
ResultDTO
resultDTO
=
campaignService
.
getListFieldsNotShow
(
dto
);
return
new
ResponseEntity
<>(
resultDTO
,
HttpStatus
.
OK
);
}
@PostMapping
(
"/getListFieldsToShow"
)
@ResponseBody
public
ResponseEntity
<?>
getListFieldsToShow
(
@RequestBody
CampaignRequestDTO
dto
)
{
ResultDTO
resultDTO
=
campaignService
.
getListFieldsToShow
(
dto
);
return
new
ResponseEntity
<>(
resultDTO
,
HttpStatus
.
OK
);
}
}
src/main/resources/sql/campaign-execute/get-execute-interactive.sql
View file @
f28c3359
with
campaign_type_list
as
(
select
trim
(
regexp_substr
(:
p_list_compaign_type
,
'[^,]+'
,
1
,
level
))
campaign_type
from
dual
connect
by
level
<=
regexp_count
(:
p_list_compaign_type
,
','
)
+
1
),
contact_status_list
as
(
select
trim
(
regexp_substr
(:
p_list_contact_status
,
'[^,]+'
,
1
,
level
))
contact_status
from
dual
connect
by
level
<=
regexp_count
(:
p_list_contact_status
,
','
)
+
1
),
survey_status_list
as
(
select
trim
(
regexp_substr
(:
p_list_survey_status
,
'[^,]+'
,
1
,
level
))
survey_status
from
dual
connect
by
level
<=
regexp_count
(:
p_list_survey_status
,
','
)
+
1
),
record_status_list
as
(
select
trim
(
regexp_substr
(:
p_list_record_status
,
'[^,]+'
,
1
,
level
))
record_status
from
dual
connect
by
level
<=
regexp_count
(:
p_list_record_status
,
','
)
+
1
),
campaign_id_list
as
(
select
trim
(
regexp_substr
(:
p_list_campaign_id
,
'[^,]+'
,
1
,
level
))
campaign_id
from
dual
connect
by
level
<=
regexp_count
(:
p_list_campaign_id
,
','
)
+
1
),
data_temp
as
(
select
b
.
campaign_code
campaignCode
,
b
.
campaign_name
campaignName
,
c
.
user_name
userName
,
...
...
@@ -22,3 +48,18 @@ where a.status <> 0
and
a
.
create_time
<=
to_date
(:
p_date_to
,
'DD/MM/YYYY'
)
and
a
.
duration_call
>=
:
p_call_time_from
and
a
.
duration_call
<=
:
p_call_time_to
and
to_char
(
a
.
customer_id
)
like
'%'
||
:
p_customer_id
||
'%'
and
b
.
campaign_type
in
(
select
campaign_type
from
campaign_type_list
)
and
to_char
(
a
.
contact_status
)
in
(
select
contact_status
from
contact_status_list
)
and
to_char
(
a
.
call_status
)
in
(
select
survey_status
from
survey_status_list
)
and
to_char
(
a
.
status
)
in
(
select
record_status
from
record_status_list
)
and
(:
p_phone_number
is
null
or
to_char
(
a
.
phone_number
)
like
'%'
||
:
p_phone_number
||
'%'
)
and
(:
p_list_campaign_id
is
null
or
b
.
campaign_code
in
(
select
campaign_id
from
campaign_id_list
))
and
(:
p_campaign_name
is
null
or
upper
(
b
.
campaign_name
)
like
'%'
||
:
p_campaign_name
||
'%'
)
and
(:
p_user_name
is
null
or
upper
(
c
.
user_name
)
like
'%'
||
:
p_user_name
||
'%'
)
),
data
as
(
select
a
.
*
,
rownum
row_
from
data_temp
a
)
select
*
from
data
where
:
p_page_size
=
0
or
(
row_
>=
((:
p_page_number
-
1
)
*
:
p_page_size
+
1
)
and
row_
<
(:
p_page_number
*
:
p_page_size
+
1
))
src/main/resources/sql/campaign-mng/get-list-customer-reallocation.sql
0 → 100644
View file @
f28c3359
with
contact
as
(
select
customer_id
,
contact
from
(
select
*
from
customer_contact
where
status
=
1
and
contact_type
=
5
and
is_direct_line
=
1
order
by
create_date
desc
)
where
rownum
=
1
),
connect_status
as
(
select
complete_value
,
complete_name
from
campaign_complete_code
where
company_site_id
=
:
p_company_site_id
and
complete_type
=
1
and
complete_value
<>
1
),
connect_status_list
as
(
select
trim
(
regexp_substr
(:
p_list_connect_status
,
'[^,]+'
,
1
,
level
))
connect_status
from
dual
connect
by
level
<=
regexp_count
(:
p_list_connect_status
,
','
)
+
1
),
data
as
(
select
a
.
campaign_customer_id
campaignCustomerId
,
b
.
name
customerName
,
c
.
contact
mobileNumber
,
to_char
(
a
.
call_time
,
'DD/MM/YYYY HH24:MI:SS'
)
connectTime
,
d
.
complete_name
connectStatus
from
campaign_customer
a
left
join
customer
b
on
a
.
customer_id
=
b
.
customer_id
left
join
contact
c
on
a
.
customer_id
=
c
.
customer_id
left
join
connect_status
d
on
d
.
complete_value
=
a
.
status
where
a
.
campaign_id
=
:
p_campaign_id
and
a
.
in_campaign_status
=
1
and
a
.
status
in
(
select
connect_status
from
connect_status_list
)
order
by
connectTime
desc
,
customerName
),
final_data
as
(
select
a
.
*
,
rownum
row_
from
data
a
)
select
*
from
final_data
where
row_
>=
((:
p_page_number
-
1
)
*
:
p_page_size
+
1
)
and
row_
<
(:
p_page_number
*
:
p_page_size
+
1
)
src/main/resources/sql/campaign-mng/get-list-fields-not-show.sql
0 → 100644
View file @
f28c3359
with
column_name_temp
as
(
select
column_name
columnName
,
1
isFix
from
user_tab_columns
,
dual
where
table_name
=
'CUSTOMER'
)
select
*
from
column_name_temp
where
columnName
not
in
(
select
column_name
from
campaign_customerlist_column
)
union
all
select
title
columnName
,
0
isFix
from
customize_fields
,
dual
where
function_code
=
'CUSTOMER'
and
site_id
=
:
p_company_site_id
and
customize_field_id
not
in
(
select
customize_field_id
from
campaign_customerlist_column
where
campaign_customerlist_column
.
campaign_id
=
:
p_campaign_id
)
src/main/resources/sql/campaign-mng/get-list-fields-to-show.sql
0 → 100644
View file @
f28c3359
select
to_char
(
column_name
)
columnName
,
1
isFix
from
campaign_customerlist_column
,
dual
where
campaign_id
=
:
p_campaign_id
union
all
select
customize_field_title
columnName
,
0
isFix
from
campaign_customerlist_column
where
campaign_id
=
:
p_campaign_id
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