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
0c65e1b0
Commit
0c65e1b0
authored
Aug 19, 2019
by
Vu Duy Anh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
anhvd merge code lan cuoi nhe
parent
1a7e533e
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1087 additions
and
253 deletions
+1087
-253
.gitignore
.gitignore
+1
-0
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignExecuteRepositoryImp.java
...pository/ccms_full/impl/CampaignExecuteRepositoryImp.java
+425
-17
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignRepositoryImpl.java
...ign/repository/ccms_full/impl/CampaignRepositoryImpl.java
+114
-74
src/main/java/com/viettel/campaign/repository/ccms_full/impl/UserActionLogRepositoryImpl.java
...epository/ccms_full/impl/UserActionLogRepositoryImpl.java
+24
-3
src/main/java/com/viettel/campaign/service/impl/AgentsServiceImpl.java
.../com/viettel/campaign/service/impl/AgentsServiceImpl.java
+132
-63
src/main/java/com/viettel/campaign/service/impl/CampaignCfgServiceImpl.java
...viettel/campaign/service/impl/CampaignCfgServiceImpl.java
+68
-11
src/main/java/com/viettel/campaign/service/impl/CustomerServiceImpl.java
...om/viettel/campaign/service/impl/CustomerServiceImpl.java
+302
-41
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
+17
-17
src/main/resources/sql/campaign-mng/campaign-agents-by-params.sql
.../resources/sql/campaign-mng/campaign-agents-by-params.sql
+0
-23
src/main/resources/sql/campaign-mng/campaign-customer-detail-by-params.sql
...s/sql/campaign-mng/campaign-customer-detail-by-params.sql
+2
-2
src/main/resources/sql/campaign-status-mng/findAll-CampaignCompleteCode.sql
.../sql/campaign-status-mng/findAll-CampaignCompleteCode.sql
+2
-2
No files found.
.gitignore
View file @
0c65e1b0
...
...
@@ -3,3 +3,4 @@ target/
logs/
out/
/campaign.iml
/lib
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignExecuteRepositoryImp.java
View file @
0c65e1b0
...
...
@@ -6,16 +6,27 @@ import com.viettel.campaign.repository.ccms_full.TimeRangeDialModeRepository;
import
com.viettel.campaign.repository.ccms_full.TimeZoneDialModeRepository
;
import
com.viettel.campaign.utils.Constants
;
import
com.viettel.campaign.utils.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.CampaignDTO
;
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.DateType
;
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.beans.factory.annotation.Qualifier
;
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
;
...
...
@@ -53,18 +64,17 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
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-status"
);
StringBuilder
stringBuilder
=
new
StringBuilder
();
stringBuilder
.
append
(
sql
);
// String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-status");
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"select distinct COMPLETE_VALUE apParamId,"
);
sb
.
append
(
" COMPLETE_NAME parName"
);
sb
.
append
(
" from CAMPAIGN_COMPLETE_CODE"
);
sb
.
append
(
" where to_char(COMPLETE_TYPE) = :p_complete_type and STATUS = 1 and COMPANY_SITE_ID = :p_company_site_id"
);
try
{
params
.
put
(
"p_company_site_id"
,
companySiteId
);
if
(
CONNECT_STATUS_TYPE_RE
.
equals
(
completeType
))
{
params
.
put
(
"p_complete_type"
,
"1"
);
stringBuilder
.
append
(
" and COMPLETE_VALUE <> 1"
);
}
else
{
params
.
put
(
"p_complete_type"
,
completeType
);
}
list
=
namedParameterJdbcTemplate
.
query
(
stringBuilder
.
toString
(),
params
,
BeanPropertyRowMapper
.
newInstance
(
ApParamDTO
.
class
));
params
.
put
(
"p_complete_type"
,
completeType
);
list
=
namedParameterJdbcTemplate
.
query
(
sb
.
toString
(),
params
,
BeanPropertyRowMapper
.
newInstance
(
ApParamDTO
.
class
));
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
...
...
@@ -75,10 +85,19 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
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"
);
//String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-combo-campaign-type");
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"select PAR_VALUE apParamId,"
);
sb
.
append
(
" PAR_NAME parName"
);
sb
.
append
(
" from AP_PARAM"
);
sb
.
append
(
" where PAR_TYPE = 'CAMPAIGN_TYPE'"
);
sb
.
append
(
" and COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" and IS_DELETE = 0"
);
try
{
params
.
put
(
"p_company_site_id"
,
companySiteId
);
list
=
namedParameterJdbcTemplate
.
query
(
s
ql
,
params
,
BeanPropertyRowMapper
.
newInstance
(
ApParamDTO
.
class
));
list
=
namedParameterJdbcTemplate
.
query
(
s
b
.
toString
()
,
params
,
BeanPropertyRowMapper
.
newInstance
(
ApParamDTO
.
class
));
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
...
...
@@ -89,9 +108,214 @@ 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"
);
// String sql = SQLBuilder.getSqlQueryById(Constants.SQL_MODULES.MODULE_EXECUTE, "get-execute-interactive");
StringBuilder
sql
=
new
StringBuilder
();
sb
.
append
(
"with campaign_type_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_compaign_type, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" contact_status_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_contact_status, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" survey_status_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_survey_status, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" record_status_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_record_status, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" campaign_id_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_campaign_id, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" data_temp as ("
);
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 to_char(a.customer_id) like '%'||:p_customer_id||'%'"
);
sb
.
append
(
" and b.campaign_type in (select campaign_type from campaign_type_list)"
);
sb
.
append
(
" and to_char(a.contact_status) in (select contact_status from contact_status_list)"
);
sb
.
append
(
" and to_char(a.call_status) in (select survey_status from survey_status_list)"
);
sb
.
append
(
" and to_char(a.status) in (select record_status from record_status_list)"
);
sb
.
append
(
" and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')"
);
sb
.
append
(
" and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))"
);
sb
.
append
(
" and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')"
);
sb
.
append
(
" and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" data as ("
);
sb
.
append
(
" select a.*, rownum row_ from data_temp a"
);
sb
.
append
(
" )"
);
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
());
...
...
@@ -108,7 +332,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params
.
put
(
"p_page_number"
,
dto
.
getPage
().
toString
());
params
.
put
(
"p_page_size"
,
dto
.
getPageSize
().
toString
());
list
=
namedParameterJdbcTemplate
.
query
(
sql
,
params
,
BeanPropertyRowMapper
.
newInstance
(
ContactCustResultDTO
.
class
));
list
=
namedParameterJdbcTemplate
.
query
(
sql
.
toString
()
,
params
,
BeanPropertyRowMapper
.
newInstance
(
ContactCustResultDTO
.
class
));
resultDTO
.
setListData
(
list
);
resultDTO
.
setTotalRow
(
list
.
size
());
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
...
...
@@ -118,16 +342,200 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
finally
{
return
resultDTO
;
}
// }
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"
);
//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
();
sb
.
append
(
"with campaign_type_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_compaign_type, '[^,]+', 1, level)) campaign_type"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_compaign_type, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" contact_status_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_contact_status, '[^,]+', 1, level)) contact_status"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_contact_status, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" survey_status_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_survey_status, '[^,]+', 1, level)) survey_status"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_survey_status, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" record_status_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_record_status, '[^,]+', 1, level)) record_status"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_record_status, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" campaign_id_list as ("
);
sb
.
append
(
" select trim (regexp_substr(:p_list_campaign_id, '[^,]+', 1, level)) campaign_id"
);
sb
.
append
(
" from dual"
);
sb
.
append
(
" connect by level <= regexp_count(:p_list_campaign_id, ',') +1"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" data_temp as ("
);
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 to_char(a.customer_id) like '%'||:p_customer_id||'%'"
);
sb
.
append
(
" and b.campaign_type in (select campaign_type from campaign_type_list)"
);
sb
.
append
(
" and to_char(a.contact_status) in (select contact_status from contact_status_list)"
);
sb
.
append
(
" and to_char(a.call_status) in (select survey_status from survey_status_list)"
);
sb
.
append
(
" and to_char(a.status) in (select record_status from record_status_list)"
);
sb
.
append
(
" and (:p_phone_number is null or to_char(a.phone_number) like '%'||:p_phone_number||'%')"
);
sb
.
append
(
" and (:p_list_campaign_id is null or b.campaign_code in (select campaign_id from campaign_id_list))"
);
sb
.
append
(
" and (:p_campaign_name is null or upper(b.campaign_name) like '%'||:p_campaign_name||'%')"
);
sb
.
append
(
" and (:p_user_name is null or upper(c.user_name) like '%'||:p_user_name||'%')"
);
sb
.
append
(
" ),"
);
sb
.
append
(
" data as ("
);
sb
.
append
(
" select a.*, rownum row_ from data_temp a"
);
sb
.
append
(
" )"
);
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
());
...
...
@@ -144,7 +552,7 @@ public class CampaignExecuteRepositoryImp implements CampaignExecuteRepository {
params
.
put
(
"p_page_number"
,
dto
.
getPage
().
toString
());
params
.
put
(
"p_page_size"
,
"0"
);
list
=
namedParameterJdbcTemplate
.
query
(
s
ql
,
params
,
BeanPropertyRowMapper
.
newInstance
(
ContactCustResultDTO
.
class
));
list
=
namedParameterJdbcTemplate
.
query
(
s
b2
.
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 @
0c65e1b0
...
...
@@ -61,51 +61,102 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return
result
;
}
try
{
StringBuilder
sqlStr
=
new
StringBuilder
();
sqlStr
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"search-campaign-by-params"
));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
" SELECT"
);
sb
.
append
(
" a.CAMPAIGN_ID campaignId,"
);
sb
.
append
(
" a.CAMPAIGN_CODE campaignCode,"
);
sb
.
append
(
" a.CAMPAIGN_NAME campaignName,"
);
sb
.
append
(
" a.CAMPAIGN_TYPE campaignType,"
);
sb
.
append
(
" (SELECT PAR_NAME FROM AP_PARAM WHERE STATUS = 1 AND PAR_TYPE = 'CAMPAIGN_TYPE' AND PAR_VALUE = a.CAMPAIGN_TYPE) campaignTypeName,"
);
sb
.
append
(
" a.CHANEL chanel,"
);
sb
.
append
(
" a.START_TIME startTime,"
);
sb
.
append
(
" a.END_TIME endTime,"
);
sb
.
append
(
" a.CUSTOMER_NUMBER customerNumber,"
);
sb
.
append
(
" a.STATUS status,"
);
sb
.
append
(
" a.CUSTOMER_NUMBER cusNum,"
);
sb
.
append
(
" b.SLKHThamgiaCD numOfJoinedCus,"
);
sb
.
append
(
" e.SLKHDaTuongTac numOfInteractedCus,"
);
sb
.
append
(
" c.SLKHChuaTuongTac numOfNotInteractedCus,"
);
sb
.
append
(
" d.SLKHDoNotCall_Khoa numOfLockCus,"
);
sb
.
append
(
" a.COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" a.CONTENT content,"
);
sb
.
append
(
" a.MAX_RECALL maxRecall,"
);
sb
.
append
(
" a.RECALL_TYPE recallType,"
);
sb
.
append
(
" a.RECALL_DURATION recallDuration,"
);
sb
.
append
(
" a.CURRENT_TIME_MODE currentTimeMode,"
);
sb
.
append
(
" a.WRAPUP_TIME_CONNECT wrapupTimeConnect,"
);
sb
.
append
(
" a.WRAPUP_TIME_DISCONNECT wrapupTimeDisconnect"
);
sb
.
append
(
" FROM CAMPAIGN a"
);
sb
.
append
(
" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHThamgiaCD"
);
sb
.
append
(
" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID"
);
sb
.
append
(
" WHERE 1 = 1 AND cc.IN_CAMPAIGN_STATUS = 1 AND cus.STATUS = 1"
);
sb
.
append
(
" group by campaign_id) b"
);
sb
.
append
(
" ON a.CAMPAIGN_ID = b.CAMPAIGN_ID"
);
sb
.
append
(
" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHChuaTuongTac"
);
sb
.
append
(
" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID"
);
sb
.
append
(
" WHERE 1 = 1 AND cc.STATUS = 0 AND cus.STATUS = 1"
);
sb
.
append
(
" group by campaign_id) c"
);
sb
.
append
(
" ON c.CAMPAIGN_ID = a.CAMPAIGN_ID"
);
sb
.
append
(
" LEFT JOIN (SELECT cc.campaign_id, count(*) AS SLKHDoNotCall_Khoa"
);
sb
.
append
(
" FROM CAMPAIGN_CUSTOMER cc , CUSTOMER c"
);
sb
.
append
(
" WHERE cc.CUSTOMER_ID = c.CUSTOMER_ID"
);
sb
.
append
(
" AND (c.IPCC_STATUS = 'locked' or c.CALL_ALLOWED = 0) AND cc.STATUS = 1"
);
sb
.
append
(
" GROUP BY cc.CAMPAIGN_ID) d"
);
sb
.
append
(
" ON d.CAMPAIGN_ID = a.CAMPAIGN_ID"
);
sb
.
append
(
" LEFT JOIN (SELECT campaign_id, COUNT (*) AS SLKHDaTuongTac"
);
sb
.
append
(
" FROM campaign_customer cc INNER JOIN CUSTOMER cus ON cc.CUSTOMER_ID = cus.CUSTOMER_ID"
);
sb
.
append
(
" WHERE 1 = 1 AND cc.STATUS <> 0 AND cus.STATUS = 1"
);
sb
.
append
(
" group by campaign_id) e"
);
sb
.
append
(
" ON e.CAMPAIGN_ID = a.CAMPAIGN_ID"
);
sb
.
append
(
" WHERE 1 = 1"
);
sb
.
append
(
" AND COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" AND a.STATUS <> -1"
);
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getCampaignCode
()))
{
s
qlStr
.
append
(
" AND a.CAMPAIGN_CODE IN (:p_code) "
);
s
b
.
append
(
" AND a.CAMPAIGN_CODE IN (:p_code) "
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getCampaignName
()))
{
s
qlStr
.
append
(
" AND UPPER(a.CAMPAIGN_NAME) LIKE :p_name"
);
s
b
.
append
(
" AND UPPER(a.CAMPAIGN_NAME) LIKE :p_name"
);
}
if
(
requestDto
.
getStatus
()
!=
null
&&
requestDto
.
getStatus
()
>=
0
)
{
s
qlStr
.
append
(
" AND a.STATUS = :p_status"
);
s
b
.
append
(
" AND a.STATUS = :p_status"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getFromDateFr
()))
{
s
qlStr
.
append
(
" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') >= :p_frDateFr"
);
s
b
.
append
(
" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') >= :p_frDateFr"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getToDateFr
()))
{
s
qlStr
.
append
(
" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') <= :p_toDateFr"
);
s
b
.
append
(
" AND TO_DATE(a.START_TIME, 'DD/MM/YYYY') <= :p_toDateFr"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getFromDateTo
()))
{
s
qlStr
.
append
(
" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') >= :p_frDateTo"
);
s
b
.
append
(
" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') >= :p_frDateTo"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getToDateTo
()))
{
s
qlStr
.
append
(
" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') <= :p_toDateTo"
);
s
b
.
append
(
" AND TO_DATE(a.END_TIME, 'DD/MM/YYYY') <= :p_toDateTo"
);
}
if
(!
DataUtil
.
isNullOrZero
(
requestDto
.
getNumOfCusFr
()))
{
s
qlStr
.
append
(
" AND a.CUSTOMER_NUMBER >= :p_cusNumFr"
);
s
b
.
append
(
" AND a.CUSTOMER_NUMBER >= :p_cusNumFr"
);
}
if
(!
DataUtil
.
isNullOrZero
(
requestDto
.
getNumOfCusTo
()))
{
s
qlStr
.
append
(
" AND a.CUSTOMER_NUMBER <= :p_cusNumTo"
);
s
b
.
append
(
" AND a.CUSTOMER_NUMBER <= :p_cusNumTo"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getTypes
()))
{
s
qlStr
.
append
(
" AND a.CAMPAIGN_TYPE IN (:p_type)"
);
s
b
.
append
(
" AND a.CAMPAIGN_TYPE IN (:p_type)"
);
}
if
(
requestDto
.
getChanel
()
!=
null
&&
!
DataUtil
.
isNullOrZero
(
requestDto
.
getChanel
()))
{
s
qlStr
.
append
(
" AND a.CHANEL = :p_chanel"
);
s
b
.
append
(
" AND a.CHANEL = :p_chanel"
);
}
if
(!
DataUtil
.
isNullOrZero
(
requestDto
.
getNumOfCusFr
()))
{
s
qlStr
.
append
(
" AND a.CUSTOMER_NUMBER >= :p_cusNumFr"
);
s
b
.
append
(
" AND a.CUSTOMER_NUMBER >= :p_cusNumFr"
);
}
if
(!
DataUtil
.
isNullOrZero
(
requestDto
.
getNumOfCusTo
()))
{
s
qlStr
.
append
(
" AND a.CUSTOMER_NUMBER <= :p_cusNumTo"
);
s
b
.
append
(
" AND a.CUSTOMER_NUMBER <= :p_cusNumTo"
);
}
s
qlStr
.
append
(
" ORDER BY a.START_TIME DESC "
);
s
b
.
append
(
" ORDER BY a.START_TIME DESC "
);
SQLQuery
query
=
session
.
createSQLQuery
(
s
qlStr
.
toString
());
SQLQuery
query
=
session
.
createSQLQuery
(
s
b
.
toString
());
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getCampaignCode
()))
{
String
[]
lstCode
=
requestDto
.
getCampaignCode
().
split
(
","
);
query
.
setParameterList
(
"p_code"
,
lstCode
);
...
...
@@ -180,7 +231,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
if
(
list
.
size
()
>
0
)
{
count
=
query
.
list
().
size
();
}
if
(
requestDto
.
getPage
()
!=
null
&&
requestDto
.
getPageSize
()
!=
null
)
{
if
(
requestDto
.
getPage
()
!=
null
&&
requestDto
.
getPageSize
()
!=
null
)
{
Pageable
pageable
=
SQLBuilder
.
buildPageable
(
requestDto
);
if
(
pageable
!=
null
)
{
query
.
setFirstResult
(
pageable
.
getPageNumber
()
*
pageable
.
getPageSize
());
...
...
@@ -189,7 +240,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
List
<
CampaignDTO
>
data
=
query
.
list
();
Page
<
CampaignDTO
>
dataPage
=
new
PageImpl
<>(
data
,
pageable
,
count
);
result
.
setData
(
dataPage
);
}
else
{
}
else
{
List
<
CampaignDTO
>
dataExport
=
query
.
list
();
result
.
setData
(
dataExport
);
}
...
...
@@ -220,8 +271,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return
result
;
}
try
{
StringBuilder
s
qlStr
=
new
StringBuilder
();
s
qlStr
.
append
(
" SELECT CAMPAIGN_ID campaignId, "
+
StringBuilder
s
b
=
new
StringBuilder
();
s
b
.
append
(
" SELECT CAMPAIGN_ID campaignId, "
+
" CAMPAIGN_CODE campaignCode, "
+
" CAMPAIGN_NAME campaignName, "
+
" START_TIME startTime,"
+
...
...
@@ -230,10 +281,10 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
" FROM CAMPAIGN"
+
" WHERE COMPANY_SITE_ID = :p_company_site_id AND STATUS <> -1 "
);
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getCampaignCode
()))
{
s
qlStr
.
append
(
" AND CAMPAIGN_CODE LIKE :p_code "
);
s
b
.
append
(
" AND CAMPAIGN_CODE LIKE :p_code "
);
}
s
qlStr
.
append
(
" ORDER BY START_TIME DESC "
);
SQLQuery
query
=
session
.
createSQLQuery
(
s
qlStr
.
toString
());
s
b
.
append
(
" ORDER BY START_TIME DESC "
);
SQLQuery
query
=
session
.
createSQLQuery
(
s
b
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
requestDto
.
getCompanySiteId
());
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getCampaignCode
()))
{
query
.
setParameter
(
"p_code"
,
"%"
+
...
...
@@ -285,11 +336,19 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
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
());
//StringBuilder sb = new StringBuilder();
//sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-max-campaign-code-index"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"SELECT CASE WHEN"
);
sb
.
append
(
" (SELECT COUNT(1) FROM CAMPAIGN) > 0"
);
sb
.
append
(
" THEN (SELECT SUBSTR((SELECT CAMPAIGN_CODE FROM CAMPAIGN WHERE CAMPAIGN_ID = (SELECT MAX(CAMPAIGN_ID) FROM CAMPAIGN)),"
);
sb
.
append
(
" INSTR((SELECT CAMPAIGN_CODE FROM CAMPAIGN WHERE CAMPAIGN_ID = (SELECT MAX(CAMPAIGN_ID) FROM CAMPAIGN)), '_', -1, 1 )+1) FROM DUAL)"
);
sb
.
append
(
" ELSE '0'"
);
sb
.
append
(
" END FROM DUAL"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
List
<
String
>
list
=
query
.
list
();
if
(
list
.
size
()
>
0
)
{
if
(
list
.
size
()
>
0
)
{
return
list
.
get
(
0
);
}
}
catch
(
Exception
ex
)
{
...
...
@@ -302,7 +361,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
public
ResultDTO
checkAllowStatusToPrepare
(
Long
campaignId
)
{
logger
.
info
(
"Start check allow campaign status to prepare::"
);
ResultDTO
result
=
new
ResultDTO
();
if
(
DataUtil
.
isNullOrZero
(
campaignId
))
{
if
(
DataUtil
.
isNullOrZero
(
campaignId
))
{
result
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
result
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
return
result
;
...
...
@@ -310,71 +369,52 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
SessionFactory
sessionFactory
=
HibernateUtil
.
getSessionFactory
();
Session
session
=
sessionFactory
.
openSession
();
try
{
StringBuilder
sqlStr
=
new
StringBuilder
();
sqlStr
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"check-allow-campaign-status-to-prepare"
));
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStr
.
toString
());
// StringBuilder sb = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "check-allow-campaign-status-to-prepare"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
" WITH COUNT_LIST AS (SELECT (SELECT COUNT(1) FROM CAMPAIGN_CUSTOMER WHERE CAMPAIGN_ID = :p_campaignId) countCamp,"
);
sb
.
append
(
" (SELECT COUNT(1) FROM CAMPAIGN_AGENT WHERE CAMPAIGN_ID = :p_campaignId) countAgent,"
);
sb
.
append
(
" (select COUNT(1)"
);
sb
.
append
(
" FROM SCENARIO s"
);
sb
.
append
(
" INNER JOIN SCENARIO_QUESTION sq ON s.SCENARIO_ID = sq.SCENARIO_ID"
);
sb
.
append
(
" INNER JOIN SCENARIO_ANSWER sa ON sq.SCENARIO_QUESTION_ID = sa.SCENARIO_QUESTION_ID"
);
sb
.
append
(
" WHERE s.CAMPAIGN_ID = :p_campaignId) countScenario"
);
sb
.
append
(
" FROM DUAL)"
);
sb
.
append
(
" SELECT c.countCamp countCamp,"
);
sb
.
append
(
" c.countAgent countAgent,"
);
sb
.
append
(
" c.countScenario countScenario,"
);
sb
.
append
(
" CASE"
);
sb
.
append
(
" WHEN (c.countCamp IS NOT NULL AND c.countAgent IS NOT NULL AND c.countScenario IS NOT NULL) THEN '00'"
);
sb
.
append
(
" ELSE '01' END as code"
);
sb
.
append
(
" FROM COUNT_LIST c"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_campaignId"
,
campaignId
);
List
<
Object
[]>
list
=
query
.
list
();
if
(
list
.
size
()
>
0
)
{
if
(
list
.
size
()
>
0
)
{
result
.
setData
(
list
.
get
(
0
));
result
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
result
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
}
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logger
.
error
(
ex
.
getMessage
(),
ex
);
result
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
result
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
finally
{
}
finally
{
session
.
close
();
}
return
result
;
}
@Override
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
findCustomerListReallocation
(
CampaignRequestDTO
dto
)
{
ResultDTO
resultDTO
=
new
ResultDTO
();
List
<
CustomerCustomDTO
>
list
=
new
ArrayList
<>();
Map
<
String
,
String
>
params
=
new
HashMap
<>();
try
{
String
sql
=
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"get-list-customer-reallocation"
);
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
(
sql
,
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
;
return
null
;
}
@Override
public
ResultDTO
reallocationCustomer
(
CampaignRequestDTO
dto
)
{
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
;
return
null
;
}
}
src/main/java/com/viettel/campaign/repository/ccms_full/impl/UserActionLogRepositoryImpl.java
View file @
0c65e1b0
...
...
@@ -32,9 +32,30 @@ public class UserActionLogRepositoryImpl implements UserActionLogRepositoryCusto
Session
session
=
sessionFactory
.
openSession
();
session
.
beginTransaction
();
try
{
StringBuilder
sqlStr
=
new
StringBuilder
();
sqlStr
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"insert-to-user-action-log"
));
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStr
.
toString
());
// StringBuilder sqlStr = new StringBuilder();
// sqlStr.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "insert-to-user-action-log"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"INSERT INTO \"CCMS_FULL\".\"USER_ACTION_LOG\" ("
);
sb
.
append
(
" AGENT_ID,"
);
sb
.
append
(
" COMPANY_SITE_ID,"
);
sb
.
append
(
" SESSION_ID,"
);
sb
.
append
(
" START_TIME,"
);
sb
.
append
(
" END_TIME,"
);
sb
.
append
(
" ACTION_TYPE,"
);
sb
.
append
(
" DESCRIPTION,"
);
sb
.
append
(
" OBJECT_ID)"
);
sb
.
append
(
" VALUES ("
);
sb
.
append
(
" :par_agentId,"
);
sb
.
append
(
" :par_companySiteId,"
);
sb
.
append
(
" :par_sessionId,"
);
sb
.
append
(
" :par_startTime,"
);
sb
.
append
(
" null,"
);
sb
.
append
(
" :par_actionType,"
);
sb
.
append
(
" null,"
);
sb
.
append
(
" :par_objectId)"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"par_agentId"
,
userActionLogDTO
.
getAgentId
()
==
null
?
""
:
userActionLogDTO
.
getAgentId
());
query
.
setParameter
(
"par_companySiteId"
,
userActionLogDTO
.
getCompanySiteId
());
query
.
setParameter
(
"par_sessionId"
,
userActionLogDTO
.
getSessionId
());
...
...
src/main/java/com/viettel/campaign/service/impl/AgentsServiceImpl.java
View file @
0c65e1b0
...
...
@@ -76,16 +76,47 @@ public class AgentsServiceImpl implements AgentsService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"campaign-agents-by-params"
));
sqlStrBuilder
.
append
(
" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID"
);
sqlStrBuilder
.
append
(
" WHERE 1 = 1"
);
sqlStrBuilder
.
append
(
" AND a.COMPANY_SITE_ID = :p_company_site_id"
);
sqlStrBuilder
.
append
(
" AND b.CAMPAIGN_AGENT_ID IS NULL"
);
sqlStrBuilder
.
append
(
" ORDER BY a.FULL_NAME ASC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStrBuilder
.
toString
());
// StringBuilder sb = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"SELECT"
);
sb
.
append
(
" a.USER_ID userId,"
);
sb
.
append
(
" a.USER_NAME userName,"
);
sb
.
append
(
" a.STATUS status,"
);
sb
.
append
(
" a.FULL_NAME fullName,"
);
sb
.
append
(
" a.USER_TYPE_ID userTypeId,"
);
sb
.
append
(
" a.CREATE_DATE createDate,"
);
sb
.
append
(
" a.DESCRIPTION description,"
);
sb
.
append
(
" a.STAFF_CODE staffCode,"
);
sb
.
append
(
" a.MANAGER_ID managerId,"
);
sb
.
append
(
" a.LOCATION_ID locationId,"
);
sb
.
append
(
" a.DEPT_ID deptId,"
);
sb
.
append
(
" a.DEPT_LEVEL deptLevel,"
);
sb
.
append
(
" a.POS_ID posId,"
);
sb
.
append
(
" a.DEPT_NAME deptName,"
);
sb
.
append
(
" a.GROUP_ID groupId,"
);
sb
.
append
(
" a.SITE_ID siteId,"
);
sb
.
append
(
" a.COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" a.AGENT_TYPE agentType,"
);
sb
.
append
(
" a.MOBILE_NUMBER mobileNumber,"
);
sb
.
append
(
" a.FACEBOOK_ID facebookId,"
);
sb
.
append
(
" a.LOGIN_TYPE loginType,"
);
sb
.
append
(
" a.GOOGLE_ID googleId,"
);
sb
.
append
(
" a.EMAIL email,"
);
sb
.
append
(
" a.AVAILABLE_TICKET availableTicket,"
);
sb
.
append
(
" a.USER_KAZOO_ID userKazooId,"
);
sb
.
append
(
" b.FILTER_TYPE filterType"
);
sb
.
append
(
" FROM VSA_USERS a"
);
sb
.
append
(
" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID"
);
sb
.
append
(
" WHERE 1 = 1"
);
sb
.
append
(
" AND a.COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" AND b.AGENT_ID IS NULL"
);
sb
.
append
(
" ORDER BY a.FULL_NAME ASC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
companySiteId
);
...
...
@@ -93,29 +124,28 @@ public class AgentsServiceImpl implements AgentsService {
query
.
addScalar
(
"userName"
,
new
StringType
());
query
.
addScalar
(
"status"
,
new
ShortType
());
query
.
addScalar
(
"fullName"
,
new
StringType
());
//
query.addScalar("userTypeId", new LongType());
//
query.addScalar("createDate", new DateType());
//
query.addScalar("description", new StringType());
//
query.addScalar("staffCode", new StringType());
//
query.addScalar("managerId", new LongType());
//
query.addScalar("locationId", new LongType());
//
query.addScalar("deptId", new LongType());
//
query.addScalar("deptLevel", new StringType());
//
query.addScalar("posId", new LongType());
//
query.addScalar("deptName", new StringType());
//
query.addScalar("groupId", new LongType());
//
query.addScalar("siteId", new LongType());
query
.
addScalar
(
"userTypeId"
,
new
LongType
());
query
.
addScalar
(
"createDate"
,
new
DateType
());
query
.
addScalar
(
"description"
,
new
StringType
());
query
.
addScalar
(
"staffCode"
,
new
StringType
());
query
.
addScalar
(
"managerId"
,
new
LongType
());
query
.
addScalar
(
"locationId"
,
new
LongType
());
query
.
addScalar
(
"deptId"
,
new
LongType
());
query
.
addScalar
(
"deptLevel"
,
new
StringType
());
query
.
addScalar
(
"posId"
,
new
LongType
());
query
.
addScalar
(
"deptName"
,
new
StringType
());
query
.
addScalar
(
"groupId"
,
new
LongType
());
query
.
addScalar
(
"siteId"
,
new
LongType
());
query
.
addScalar
(
"companySiteId"
,
new
LongType
());
//
query.addScalar("agentType", new ShortType());
//
query.addScalar("mobileNumber", new StringType());
//
query.addScalar("facebookId", new StringType());
//
query.addScalar("loginType", new ShortType());
//
query.addScalar("googleId", new StringType());
//
query.addScalar("email", new StringType());
//
query.addScalar("availableTicket", new LongType());
//
query.addScalar("userKazooId", new StringType());
query
.
addScalar
(
"agentType"
,
new
ShortType
());
query
.
addScalar
(
"mobileNumber"
,
new
StringType
());
query
.
addScalar
(
"facebookId"
,
new
StringType
());
query
.
addScalar
(
"loginType"
,
new
ShortType
());
query
.
addScalar
(
"googleId"
,
new
StringType
());
query
.
addScalar
(
"email"
,
new
StringType
());
query
.
addScalar
(
"availableTicket"
,
new
LongType
());
query
.
addScalar
(
"userKazooId"
,
new
StringType
());
query
.
addScalar
(
"filterType"
,
new
ShortType
());
query
.
addScalar
(
"campaignAgentId"
,
new
LongType
());
query
.
setResultTransformer
(
Transformers
.
aliasToBean
(
VSAUsersDTO
.
class
));
int
count
=
0
;
...
...
@@ -160,16 +190,46 @@ public class AgentsServiceImpl implements AgentsService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"campaign-agents-by-params"
));
sqlStrBuilder
.
append
(
" RIGHT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID"
);
sqlStrBuilder
.
append
(
" WHERE 1 = 1"
);
sqlStrBuilder
.
append
(
" AND b.COMPANY_SITE_ID = :p_company_site_id"
);
sqlStrBuilder
.
append
(
" AND b.CAMPAIGN_ID = :p_campaign_id"
);
sqlStrBuilder
.
append
(
" ORDER BY a.FULL_NAME ASC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStrBuilder
.
toString
());
// StringBuilder sb = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"SELECT"
);
sb
.
append
(
" a.USER_ID userId,"
);
sb
.
append
(
" a.USER_NAME userName,"
);
sb
.
append
(
" a.STATUS status,"
);
sb
.
append
(
" a.FULL_NAME fullName,"
);
sb
.
append
(
" a.USER_TYPE_ID userTypeId,"
);
sb
.
append
(
" a.CREATE_DATE createDate,"
);
sb
.
append
(
" a.DESCRIPTION description,"
);
sb
.
append
(
" a.STAFF_CODE staffCode,"
);
sb
.
append
(
" a.MANAGER_ID managerId,"
);
sb
.
append
(
" a.LOCATION_ID locationId,"
);
sb
.
append
(
" a.DEPT_ID deptId,"
);
sb
.
append
(
" a.DEPT_LEVEL deptLevel,"
);
sb
.
append
(
" a.POS_ID posId,"
);
sb
.
append
(
" a.DEPT_NAME deptName,"
);
sb
.
append
(
" a.GROUP_ID groupId,"
);
sb
.
append
(
" a.SITE_ID siteId,"
);
sb
.
append
(
" a.COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" a.AGENT_TYPE agentType,"
);
sb
.
append
(
" a.MOBILE_NUMBER mobileNumber,"
);
sb
.
append
(
" a.FACEBOOK_ID facebookId,"
);
sb
.
append
(
" a.LOGIN_TYPE loginType,"
);
sb
.
append
(
" a.GOOGLE_ID googleId,"
);
sb
.
append
(
" a.EMAIL email,"
);
sb
.
append
(
" a.AVAILABLE_TICKET availableTicket,"
);
sb
.
append
(
" a.USER_KAZOO_ID userKazooId,"
);
sb
.
append
(
" b.FILTER_TYPE filterType"
);
sb
.
append
(
" FROM VSA_USERS a"
);
sb
.
append
(
" RIGHT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID"
);
sb
.
append
(
" WHERE 1 = 1"
);
sb
.
append
(
" AND b.COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" AND b.CAMPAIGN_ID = :p_campaign_id"
);
sb
.
append
(
" ORDER BY a.FULL_NAME ASC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
companySiteId
);
query
.
setParameter
(
"p_campaign_id"
,
campaignId
);
...
...
@@ -178,29 +238,28 @@ public class AgentsServiceImpl implements AgentsService {
query
.
addScalar
(
"userName"
,
new
StringType
());
query
.
addScalar
(
"status"
,
new
ShortType
());
query
.
addScalar
(
"fullName"
,
new
StringType
());
//
query.addScalar("userTypeId", new LongType());
//
query.addScalar("createDate", new DateType());
//
query.addScalar("description", new StringType());
//
query.addScalar("staffCode", new StringType());
//
query.addScalar("managerId", new LongType());
//
query.addScalar("locationId", new LongType());
//
query.addScalar("deptId", new LongType());
//
query.addScalar("deptLevel", new StringType());
//
query.addScalar("posId", new LongType());
//
query.addScalar("deptName", new StringType());
//
query.addScalar("groupId", new LongType());
//
query.addScalar("siteId", new LongType());
query
.
addScalar
(
"userTypeId"
,
new
LongType
());
query
.
addScalar
(
"createDate"
,
new
DateType
());
query
.
addScalar
(
"description"
,
new
StringType
());
query
.
addScalar
(
"staffCode"
,
new
StringType
());
query
.
addScalar
(
"managerId"
,
new
LongType
());
query
.
addScalar
(
"locationId"
,
new
LongType
());
query
.
addScalar
(
"deptId"
,
new
LongType
());
query
.
addScalar
(
"deptLevel"
,
new
StringType
());
query
.
addScalar
(
"posId"
,
new
LongType
());
query
.
addScalar
(
"deptName"
,
new
StringType
());
query
.
addScalar
(
"groupId"
,
new
LongType
());
query
.
addScalar
(
"siteId"
,
new
LongType
());
query
.
addScalar
(
"companySiteId"
,
new
LongType
());
//
query.addScalar("agentType", new ShortType());
//
query.addScalar("mobileNumber", new StringType());
//
query.addScalar("facebookId", new StringType());
//
query.addScalar("loginType", new ShortType());
//
query.addScalar("googleId", new StringType());
//
query.addScalar("email", new StringType());
//
query.addScalar("availableTicket", new LongType());
//
query.addScalar("userKazooId", new StringType());
query
.
addScalar
(
"agentType"
,
new
ShortType
());
query
.
addScalar
(
"mobileNumber"
,
new
StringType
());
query
.
addScalar
(
"facebookId"
,
new
StringType
());
query
.
addScalar
(
"loginType"
,
new
ShortType
());
query
.
addScalar
(
"googleId"
,
new
StringType
());
query
.
addScalar
(
"email"
,
new
StringType
());
query
.
addScalar
(
"availableTicket"
,
new
LongType
());
query
.
addScalar
(
"userKazooId"
,
new
StringType
());
query
.
addScalar
(
"filterType"
,
new
ShortType
());
query
.
addScalar
(
"campaignAgentId"
,
new
LongType
());
query
.
setResultTransformer
(
Transformers
.
aliasToBean
(
VSAUsersDTO
.
class
));
int
count
=
0
;
...
...
@@ -292,9 +351,19 @@ public class AgentsServiceImpl implements AgentsService {
}
try
{
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"campaign-agents-by-params"
));
sqlStrBuilder
.
append
(
"SELECT"
);
sqlStrBuilder
.
append
(
" a.USER_ID userId,"
);
sqlStrBuilder
.
append
(
" a.USER_NAME userName,"
);
sqlStrBuilder
.
append
(
" a.STATUS status,"
);
sqlStrBuilder
.
append
(
" a.FULL_NAME fullName,"
);
sqlStrBuilder
.
append
(
" a.COMPANY_SITE_ID companySiteId,"
);
sqlStrBuilder
.
append
(
" b.FILTER_TYPE filterType,"
);
sqlStrBuilder
.
append
(
" b.CAMPAIGN_AGENT_ID campaignAgentId"
);
sqlStrBuilder
.
append
(
" FROM VSA_USERS a"
);
sqlStrBuilder
.
append
(
" LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID"
);
sqlStrBuilder
.
append
(
" JOIN USER_ROLE c on a.USER_ID = c.USER_ID"
);
sqlStrBuilder
.
append
(
" JOIN ROLE d on c.ROLE_ID = d.ROLE_ID"
);
...
...
src/main/java/com/viettel/campaign/service/impl/CampaignCfgServiceImpl.java
View file @
0c65e1b0
...
...
@@ -54,10 +54,36 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_STATUS_MNG
,
"findAll-CampaignCompleteCode"
));
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStrBuilder
.
toString
());
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "findAll-CampaignCompleteCode"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"SELECT"
);
sb
.
append
(
" CAMPAIGN_COMPLETE_CODE_ID campaignCompleteCodeId,"
);
sb
.
append
(
" IS_RECALL isRecall ,"
);
sb
.
append
(
" CAMPAIGN_ID campaignId,"
);
sb
.
append
(
" COMPLETE_VALUE completeValue,"
);
sb
.
append
(
" COMPLETE_NAME completeName,"
);
sb
.
append
(
" COMPLETE_TYPE completeType,"
);
sb
.
append
(
" CAMPAIGN_TYPE campaignType,"
);
sb
.
append
(
" DESCRIPTION description,"
);
sb
.
append
(
" STATUS status,"
);
sb
.
append
(
" COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" UPDATE_BY updateBy ,"
);
sb
.
append
(
" UPDATE_AT updateAt,"
);
sb
.
append
(
" CREATE_BY createBy,"
);
sb
.
append
(
" CREATE_AT createAt,"
);
sb
.
append
(
" IS_FINISH isFinish,"
);
sb
.
append
(
" IS_LOCK isLock,"
);
sb
.
append
(
" DURATION_LOCK durationLock,"
);
sb
.
append
(
" CHANEL chanel"
);
sb
.
append
(
" FROM CAMPAIGN_COMPLETE_CODE"
);
sb
.
append
(
" where 1 = 1"
);
sb
.
append
(
" AND STATUS = 1"
);
sb
.
append
(
" and COMPANY_SITE_ID = :p_company_site_id"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
companySiteId
);
...
...
@@ -258,10 +284,16 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_STATUS_MNG
,
"get-max-value-completevalue"
));
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG, "get-max-value-completevalue"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"SELECT max(to_number(COMPLETE_VALUE)) completeValue, COMPANY_SITE_ID "
);
sb
.
append
(
" companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id "
);
sb
.
append
(
" GROUP BY COMPANY_SITE_ID"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStrBuilder
.
toString
());
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_site_id"
,
completeCodeDTO
.
getCompanySiteId
());
query
.
addScalar
(
"completeValue"
,
new
StringType
());
...
...
@@ -341,10 +373,35 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_STATUS_MNG
,
"findCampaignCodeById"
));
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStrBuilder
.
toString
());
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_STATUS_MNG,"findCampaignCodeById"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"SELECT CAMPAIGN_COMPLETE_CODE_ID campaignCompleteCodeId,"
);
sb
.
append
(
" IS_RECALL isRecall ,"
);
sb
.
append
(
" CAMPAIGN_ID campaignId,"
);
sb
.
append
(
" COMPLETE_VALUE completeValue,"
);
sb
.
append
(
" COMPLETE_NAME completeName,"
);
sb
.
append
(
" COMPLETE_TYPE completeType,"
);
sb
.
append
(
" CAMPAIGN_TYPE campaignType,"
);
sb
.
append
(
" DESCRIPTION description,"
);
sb
.
append
(
" STATUS status,"
);
sb
.
append
(
" COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" UPDATE_BY updateBy ,"
);
sb
.
append
(
" UPDATE_AT updateAt,"
);
sb
.
append
(
" CREATE_BY createBy,"
);
sb
.
append
(
" CREATE_AT createAt,"
);
sb
.
append
(
" IS_FINISH isFinish,"
);
sb
.
append
(
" IS_LOCK isLock,"
);
sb
.
append
(
" DURATION_LOCK durationLock,"
);
sb
.
append
(
" CHANEL chanel"
);
sb
.
append
(
" from CAMPAIGN_COMPLETE_CODE WHERE "
);
sb
.
append
(
" CAMPAIGN_COMPLETE_CODE_ID=:p_campaignComleteCode"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_campaignComleteCode"
,
campaignCompleteCodeId
);
...
...
src/main/java/com/viettel/campaign/service/impl/CustomerServiceImpl.java
View file @
0c65e1b0
...
...
@@ -91,12 +91,44 @@ public class CustomerServiceImpl implements CustomerService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"campaign-customer-detail-by-params"
));
sqlStrBuilder
.
append
(
" ORDER BY b.NAME ASC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStrBuilder
.
toString
());
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
//sqlStrBuilder.append(" ORDER BY b.NAME ASC");
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"select"
);
sb
.
append
(
" a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,"
);
sb
.
append
(
" a.COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" a.CUSTOMER_LIST_ID customerListId,"
);
sb
.
append
(
" a.CUSTOMER_ID customerId,"
);
sb
.
append
(
" b.NAME name,"
);
sb
.
append
(
" b.DESCRIPTION description,"
);
sb
.
append
(
" b.COMPANY_NAME companyName,"
);
sb
.
append
(
" b.CUSTOMER_TYPE customerType,"
);
sb
.
append
(
" b.CURRENT_ADDRESS currentAddress,"
);
sb
.
append
(
" b.CALL_ALLOWED callAllowed,"
);
sb
.
append
(
" b.EMAIL_ALLOWED emailAllowed,"
);
sb
.
append
(
" b.SMS_ALLOWED smsAllowed,"
);
sb
.
append
(
" b.IPCC_STATUS ipccStatus,"
);
sb
.
append
(
" c.MOBILE mobileNumber,"
);
sb
.
append
(
" d.EMAIL email"
);
sb
.
append
(
" from CUSTOMER_LIST_MAPPING a"
);
sb
.
append
(
" join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID"
);
sb
.
append
(
" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY "
);
sb
.
append
(
" NULL) AS MOBILE"
);
sb
.
append
(
" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY "
);
sb
.
append
(
" CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID"
);
sb
.
append
(
" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY "
);
sb
.
append
(
" NULL) AS EMAIL"
);
sb
.
append
(
" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY "
);
sb
.
append
(
" CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID "
);
sb
.
append
(
" where 1 = 1"
);
sb
.
append
(
" and a.COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" and a.CUSTOMER_LIST_ID = :p_customer_list_id"
);
sb
.
append
(
" ORDER BY b.NAME ASC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
companySiteId
);
query
.
setParameter
(
"p_customer_list_id"
,
customerListId
);
...
...
@@ -180,21 +212,49 @@ public class CustomerServiceImpl implements CustomerService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"campaign-customer-detail-by-params"
));
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-customer-detail-by-params"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"select"
);
sb
.
append
(
" a.CUSTOMER_LIST_MAPPING_ID customerListMappingId,"
);
sb
.
append
(
" a.COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" a.CUSTOMER_LIST_ID customerListId,"
);
sb
.
append
(
" a.CUSTOMER_ID customerId,"
);
sb
.
append
(
" b.NAME name,"
);
sb
.
append
(
" b.DESCRIPTION description,"
);
sb
.
append
(
" b.COMPANY_NAME companyName,"
);
sb
.
append
(
" b.CUSTOMER_TYPE customerType,"
);
sb
.
append
(
" b.CURRENT_ADDRESS currentAddress,"
);
sb
.
append
(
" b.CALL_ALLOWED callAllowed,"
);
sb
.
append
(
" b.EMAIL_ALLOWED emailAllowed,"
);
sb
.
append
(
" b.SMS_ALLOWED smsAllowed,"
);
sb
.
append
(
" b.IPCC_STATUS ipccStatus,"
);
sb
.
append
(
" c.MOBILE mobileNumber,"
);
sb
.
append
(
" d.EMAIL email"
);
sb
.
append
(
" from CUSTOMER_LIST_MAPPING a"
);
sb
.
append
(
" join CUSTOMER b on a.CUSTOMER_ID = b.CUSTOMER_ID"
);
sb
.
append
(
" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS MOBILE"
);
sb
.
append
(
" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 5 GROUP BY CUSTOMER_ID) c on b.CUSTOMER_ID = c.CUSTOMER_ID"
);
sb
.
append
(
" left join (SELECT CUSTOMER_ID, LISTAGG(CONTACT, ', ') WITHIN GROUP (ORDER BY NULL) AS EMAIL"
);
sb
.
append
(
" FROM CUSTOMER_CONTACT WHERE CONTACT_TYPE = 2 GROUP BY CUSTOMER_ID) d on b.CUSTOMER_ID = d.CUSTOMER_ID"
);
sb
.
append
(
" where 1 = 1"
);
sb
.
append
(
" and a.COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" and a.CUSTOMER_LIST_ID = :p_customer_list_id"
);
if
(!
DataUtil
.
isNullOrEmpty
(
name
))
{
s
qlStrBuilder
.
append
(
" AND UPPER(b.NAME) LIKE UPPER(:p_name)"
);
s
b
.
append
(
" AND UPPER(b.NAME) LIKE UPPER(:p_name)"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
mobileNumber
))
{
s
qlStrBuilder
.
append
(
" AND UPPER(c.MOBILE) LIKE UPPER(:p_mobile_number)"
);
s
b
.
append
(
" AND UPPER(c.MOBILE) LIKE UPPER(:p_mobile_number)"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
email
))
{
s
qlStrBuilder
.
append
(
" AND UPPER(d.EMAIL) LIKE UPPER(:p_email)"
);
s
b
.
append
(
" AND UPPER(d.EMAIL) LIKE UPPER(:p_email)"
);
}
s
qlStrBuilder
.
append
(
" ORDER BY name DESC"
);
s
b
.
append
(
" ORDER BY name DESC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
s
qlStrBuilder
.
toString
());
SQLQuery
query
=
session
.
createSQLQuery
(
s
b
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
companySiteId
);
query
.
setParameter
(
"p_customer_list_id"
,
customerListId
);
...
...
@@ -356,12 +416,35 @@ public class CustomerServiceImpl implements CustomerService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"get-customer-detail-by-id"
));
sqlStrBuilder
.
append
(
" AND e.FUNCTION_CODE = 'CUSTOMER'"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStrBuilder
.
toString
());
// StringBuilder sqlStrBuilder = new StringBuilder();
// sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customer-detail-by-id"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"select"
);
sb
.
append
(
" a.COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" a.CUSTOMER_LIST_ID customerListId,"
);
sb
.
append
(
" a.CUSTOMER_ID customerId,"
);
sb
.
append
(
" e.TITLE title,"
);
sb
.
append
(
" f.TYPE type,"
);
sb
.
append
(
" h.VALUE_COMBOBOX valueCombobox,"
);
sb
.
append
(
" e.VALUE_CHECKBOX valueCheckbox,"
);
sb
.
append
(
" e.VALUE_DATE valueDate,"
);
sb
.
append
(
" e.VALUE_NUMBER valueNumber,"
);
sb
.
append
(
" e.VALUE_TEXT valueText"
);
sb
.
append
(
" from CUSTOMER_LIST_MAPPING a"
);
sb
.
append
(
" left join CUSTOMIZE_FIELD_OBJECT e on a.CUSTOMER_ID = e.OBJECT_ID"
);
sb
.
append
(
" left join CUSTOMIZE_FIELDS f on e.CUSTOMIZE_FIELDS_ID = f.CUSTOMIZE_FIELD_ID"
);
sb
.
append
(
" left join (SELECT FIELD_OPTION_VALUE_ID, NAME AS VALUE_COMBOBOX"
);
sb
.
append
(
" FROM CUSTOMIZE_FIELD_OPTION_VALUE) h on h.FIELD_OPTION_VALUE_ID = "
);
sb
.
append
(
" e.FIELD_OPTION_VALUE_ID"
);
sb
.
append
(
" where 1 = 1"
);
sb
.
append
(
" and a.COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" and a.CUSTOMER_LIST_ID = :p_customer_list_id"
);
sb
.
append
(
" and a.CUSTOMER_ID = :p_customer_id"
);
sb
.
append
(
" AND e.FUNCTION_CODE = 'CUSTOMER'"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
companySiteId
);
query
.
setParameter
(
"p_customer_list_id"
,
customerListId
);
...
...
@@ -426,12 +509,31 @@ public class CustomerServiceImpl implements CustomerService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"search-campaign-customer-by-params"
));
sqlStrBuilder
.
append
(
" ORDER BY CREATE_AT DESC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sqlStrBuilder
.
toString
());
// StringBuilder sb = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"SELECT"
);
sb
.
append
(
" CUSTOMER_LIST_ID customerListId,"
);
sb
.
append
(
" COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" CUSTOMER_LIST_CODE customerListCode,"
);
sb
.
append
(
" CUSTOMER_LIST_NAME customerListName,"
);
sb
.
append
(
" STATUS status,"
);
sb
.
append
(
" CREATE_BY createBy,"
);
sb
.
append
(
" CREATE_AT createAt,"
);
sb
.
append
(
" UPDATE_BY updateBy,"
);
sb
.
append
(
" UPDATE_AT updateAt,"
);
sb
.
append
(
" SOURCE source,"
);
sb
.
append
(
" DEPT_CREATE deptCreate"
);
sb
.
append
(
" FROM CUSTOMER_LIST"
);
sb
.
append
(
" WHERE 1 = 1"
);
sb
.
append
(
" AND STATUS = 1"
);
sb
.
append
(
" AND COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" ORDER BY CREATE_AT DESC"
);
SQLQuery
query
=
session
.
createSQLQuery
(
sb
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
companySiteId
);
...
...
@@ -608,19 +710,37 @@ public class CustomerServiceImpl implements CustomerService {
}
try
{
StringBuilder
sqlStrBuilder
=
new
StringBuilder
();
sqlStrBuilder
.
append
(
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"search-campaign-customer-by-params"
));
sqlStrBuilder
.
append
(
" AND CREATE_AT BETWEEN to_date(:p_date_from, 'YYYYMMDD') AND to_date(:p_date_to, 'YYYYMMDD')"
);
// StringBuilder sb = new StringBuilder();
// sb.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-campaign-customer-by-params"));
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"SELECT"
);
sb
.
append
(
" CUSTOMER_LIST_ID customerListId,"
);
sb
.
append
(
" COMPANY_SITE_ID companySiteId,"
);
sb
.
append
(
" CUSTOMER_LIST_CODE customerListCode,"
);
sb
.
append
(
" CUSTOMER_LIST_NAME customerListName,"
);
sb
.
append
(
" STATUS status,"
);
sb
.
append
(
" CREATE_BY createBy,"
);
sb
.
append
(
" CREATE_AT createAt,"
);
sb
.
append
(
" UPDATE_BY updateBy,"
);
sb
.
append
(
" UPDATE_AT updateAt,"
);
sb
.
append
(
" SOURCE source,"
);
sb
.
append
(
" DEPT_CREATE deptCreate"
);
sb
.
append
(
" FROM CUSTOMER_LIST"
);
sb
.
append
(
" WHERE 1 = 1"
);
sb
.
append
(
" AND STATUS = 1"
);
sb
.
append
(
" AND COMPANY_SITE_ID = :p_company_site_id"
);
sb
.
append
(
" AND CREATE_AT BETWEEN to_date(:p_date_from, 'YYYYMMDD') AND to_date(:p_date_to, 'YYYYMMDD')"
);
if
(!
DataUtil
.
isNullOrEmpty
(
searchCustomerRequestDTO
.
getCustomerListCode
()))
{
s
qlStrBuilder
.
append
(
" AND UPPER(CUSTOMER_LIST_CODE) LIKE UPPER(:p_list_code)
"
);
s
b
.
append
(
" AND CUSTOMER_LIST_CODE LIKE :p_list_code
"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
searchCustomerRequestDTO
.
getCustomerListName
()))
{
s
qlStrBuilder
.
append
(
" AND UPPER(CUSTOMER_LIST_NAME) LIKE UPPER(:p_list_name)
"
);
s
b
.
append
(
" AND CUSTOMER_LIST_NAME LIKE :p_list_name
"
);
}
SQLQuery
query
=
session
.
createSQLQuery
(
s
qlStrBuilder
.
toString
());
SQLQuery
query
=
session
.
createSQLQuery
(
s
b
.
toString
());
query
.
setParameter
(
"p_company_site_id"
,
searchCustomerRequestDTO
.
getCompanySiteId
());
query
.
setParameter
(
"p_date_from"
,
searchCustomerRequestDTO
.
getConvertedDateFrom
());
...
...
@@ -674,7 +794,8 @@ public class CustomerServiceImpl implements CustomerService {
resultDTO
.
setData
(
dataPage
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
finally
{
...
...
@@ -741,10 +862,37 @@ public class CustomerServiceImpl implements CustomerService {
public
List
<
DynamicExcelHeaderDTO
>
getDynamicHeader
(
Long
companySiteId
)
{
List
<
DynamicExcelHeaderDTO
>
headerList
;
try
{
String
sql
=
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_CUSTOMER_MNG
,
"get-dynamic-header"
);
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_CUSTOMER_MNG, "get-dynamic-header");
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
" select CUSTOMIZE_FIELD_ID customizeFieldId,"
);
sb
.
append
(
" SITE_ID companySiteId,"
);
sb
.
append
(
" FUNCTION_CODE functionCode,"
);
sb
.
append
(
" CREATE_BY createBy,"
);
sb
.
append
(
" CREATE_DATE createDate,"
);
sb
.
append
(
" UPDATE_BY updateBy,"
);
sb
.
append
(
" UPDATE_DATE updateDate,"
);
sb
.
append
(
" STATUS status,"
);
sb
.
append
(
" TYPE type,"
);
sb
.
append
(
" TITLE title,"
);
sb
.
append
(
" PLACEHOLDER placeholder,"
);
sb
.
append
(
" DESCRIPTION description,"
);
sb
.
append
(
" POSITION position,"
);
sb
.
append
(
" REQUIRED required,"
);
sb
.
append
(
" FIELD_OPTIONS_ID fieldOptionsId,"
);
sb
.
append
(
" REGEXP_FOR_VALIDATION regexpForValidation,"
);
sb
.
append
(
" MAX_LENGTH maxLength,"
);
sb
.
append
(
" MIN min,"
);
sb
.
append
(
" MAX max,"
);
sb
.
append
(
" MIN_LENGTH minLength,"
);
sb
.
append
(
" ACTIVE active"
);
sb
.
append
(
" from customize_fields"
);
sb
.
append
(
" where function_code = 'CUSTOMER'"
);
sb
.
append
(
" and site_id = :p_company_site_id"
);
Map
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"p_company_site_id"
,
companySiteId
);
headerList
=
namedParameterJdbcTemplate
.
query
(
s
ql
,
param
,
new
BeanPropertyRowMapper
<>(
DynamicExcelHeaderDTO
.
class
));
headerList
=
namedParameterJdbcTemplate
.
query
(
s
b
.
toString
()
,
param
,
new
BeanPropertyRowMapper
<>(
DynamicExcelHeaderDTO
.
class
));
}
catch
(
Exception
e
)
{
return
null
;
}
...
...
@@ -775,10 +923,32 @@ public class CustomerServiceImpl implements CustomerService {
public
List
<
CustomizeFieldDTO
>
getCustomizeField
(
Long
customerId
)
{
List
<
CustomizeFieldDTO
>
customizeFieldDTOList
;
try
{
String
sql
=
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"get-customize-field"
);
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "get-customize-field");
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
" select CUSTOMIZE_FIELD_OBJECT_ID customizeFieldObjectId,"
);
sb
.
append
(
" OBJECT_ID objectId,"
);
sb
.
append
(
" CUSTOMIZE_FIELDS_ID customizeFieldId,"
);
sb
.
append
(
" VALUE_TEXT valueText,"
);
sb
.
append
(
" VALUE_NUMBER valueNumber,"
);
sb
.
append
(
" VALUE_DATE valueDate,"
);
sb
.
append
(
" VALUE_CHECKBOX valueCheckbox,"
);
sb
.
append
(
" CREATE_BY createBy,"
);
sb
.
append
(
" CREATE_DATE createDate,"
);
sb
.
append
(
" UPDATE_BY updateBy,"
);
sb
.
append
(
" UPDATE_DATE updateDate,"
);
sb
.
append
(
" STATUS status,"
);
sb
.
append
(
" FIELD_OPTION_VALUE_ID fieldOptionValueId,"
);
sb
.
append
(
" TITLE title,"
);
sb
.
append
(
" FUNCTION_CODE functionCode"
);
sb
.
append
(
" from customize_field_object"
);
sb
.
append
(
" where function_code = 'CUSTOMER' and object_id = :p_customer_id"
);
Map
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"p_customer_id"
,
customerId
);
customizeFieldDTOList
=
namedParameterJdbcTemplate
.
query
(
s
ql
,
param
,
new
BeanPropertyRowMapper
<>(
CustomizeFieldDTO
.
class
));
customizeFieldDTOList
=
namedParameterJdbcTemplate
.
query
(
s
b
.
toString
()
,
param
,
new
BeanPropertyRowMapper
<>(
CustomizeFieldDTO
.
class
));
}
catch
(
Exception
e
)
{
return
null
;
}
...
...
@@ -790,13 +960,63 @@ public class CustomerServiceImpl implements CustomerService {
public
List
<
CustomerListDTO
>
getCustomerListInfo
(
CampaignCustomerDTO
campaignCustomerDTO
)
{
List
<
CustomerListDTO
>
customerList
;
try
{
String
sql
=
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"search-customer-list-info-from-customer-list"
);
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-customer-list-info-from-customer-list");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
" with totalCustomer as ("
);
sb
.
append
(
" select clm.customer_list_id,"
);
sb
.
append
(
" clm.company_site_id,"
);
sb
.
append
(
" count(clm.customer_id) total"
);
sb
.
append
(
" from customer_list_mapping clm"
);
sb
.
append
(
" inner join customer c on clm.customer_id = c.customer_id"
);
sb
.
append
(
" where c.status = 1"
);
sb
.
append
(
" group by clm.customer_list_id,clm.company_site_id"
);
sb
.
append
(
" ), customerInteractive as ("
);
sb
.
append
(
" select customer_list_id,"
);
sb
.
append
(
" company_site_id,"
);
sb
.
append
(
" count(customer_id) tt"
);
sb
.
append
(
" from campaign_customer where campaign_id = :p_campaign_id and status <> 0"
);
sb
.
append
(
" group by customer_list_id, company_site_id"
);
sb
.
append
(
" ), customerNotInteractive as ("
);
sb
.
append
(
" select customer_list_id,"
);
sb
.
append
(
" company_site_id,"
);
sb
.
append
(
" count(customer_id) ktt"
);
sb
.
append
(
" from campaign_customer where campaign_id = :p_campaign_id and status = 0"
);
sb
.
append
(
" and in_campaign_status = 1"
);
sb
.
append
(
" group by customer_list_id, company_site_id"
);
sb
.
append
(
" ), datas as ("
);
sb
.
append
(
" select customer_list_code customerListCode,"
);
sb
.
append
(
" customer_list_name customerListName,"
);
sb
.
append
(
" nvl(total, 0) totalCusInList,"
);
sb
.
append
(
" nvl(tt, 0) totalCusInteract,"
);
sb
.
append
(
" nvl(ktt, 0) totalCusNotInteract"
);
sb
.
append
(
" from customer_list cl"
);
sb
.
append
(
" left join totalCustomer tc on (cl.customer_list_id = tc.customer_list_id and cl.company_site_id = tc.company_site_id)"
);
sb
.
append
(
" left join customerInteractive ci on (cl.customer_list_id = ci.customer_list_id and cl.company_site_id = ci.company_site_id)"
);
sb
.
append
(
" left join customerNotInteractive cni on (cl.customer_list_id = cni.customer_list_id and cl.company_site_id = cni.company_site_id)"
);
sb
.
append
(
" where cl.company_site_id = :p_company_site_id"
);
sb
.
append
(
" )"
);
sb
.
append
(
" select * from"
);
sb
.
append
(
" ("
);
sb
.
append
(
" select a.*, rownum r__"
);
sb
.
append
(
" from"
);
sb
.
append
(
" ("
);
sb
.
append
(
" select * from datas"
);
sb
.
append
(
" order by customerListCode"
);
sb
.
append
(
" ) a"
);
sb
.
append
(
" where rownum < ((:p_page_number * :p_page_size) + 1 )"
);
sb
.
append
(
" )"
);
sb
.
append
(
" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)"
);
Map
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"p_campaign_id"
,
campaignCustomerDTO
.
getCampaignId
());
param
.
put
(
"p_company_site_id"
,
campaignCustomerDTO
.
getCompanySiteId
());
param
.
put
(
"p_page_number"
,
campaignCustomerDTO
.
getPage
());
param
.
put
(
"p_page_size"
,
campaignCustomerDTO
.
getPageSize
());
customerList
=
namedParameterJdbcTemplate
.
query
(
s
ql
,
param
,
new
BeanPropertyRowMapper
<>(
CustomerListDTO
.
class
));
customerList
=
namedParameterJdbcTemplate
.
query
(
s
b
.
toString
()
,
param
,
new
BeanPropertyRowMapper
<>(
CustomerListDTO
.
class
));
}
catch
(
Exception
e
)
{
return
null
;
}
...
...
@@ -807,11 +1027,52 @@ public class CustomerServiceImpl implements CustomerService {
public
List
<
CustomerDTO
>
getIndividualCustomerInfo
(
CampaignCustomerDTO
campaignCustomerDTO
)
{
List
<
CustomerDTO
>
customerList
;
try
{
String
sql
=
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"search-individual-customer"
);
//String sql = SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "search-individual-customer");
// BuildMyString.com generated code. Please enjoy your string responsibly.
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"with cusPhone as ("
);
sb
.
append
(
" select customer_id cusId,"
);
sb
.
append
(
" contact phone"
);
sb
.
append
(
" from customer_contact cc"
);
sb
.
append
(
" where cc.contact_type = 5"
);
sb
.
append
(
" and status = 1"
);
sb
.
append
(
" ), cusEmail as ("
);
sb
.
append
(
" select customer_id cusId,"
);
sb
.
append
(
" contact email"
);
sb
.
append
(
" from customer_contact cc"
);
sb
.
append
(
" where cc.contact_type = 2"
);
sb
.
append
(
" and status = 1"
);
sb
.
append
(
" ), datas as ("
);
sb
.
append
(
" select c.customer_id customerId,"
);
sb
.
append
(
" c.name,"
);
sb
.
append
(
" cP.phone,"
);
sb
.
append
(
" cE.email,"
);
sb
.
append
(
" c.customer_type cusType,"
);
sb
.
append
(
" c.company_name compName,"
);
sb
.
append
(
" c.current_address currentAddress,"
);
sb
.
append
(
" c.description"
);
sb
.
append
(
" from customer c"
);
sb
.
append
(
" left join cusPhone cP on c.customer_id = cP.cusId"
);
sb
.
append
(
" left join cusEmail cE on c.customer_id = cE.cusId"
);
sb
.
append
(
" )"
);
sb
.
append
(
" select * from"
);
sb
.
append
(
" ("
);
sb
.
append
(
" select a.*, rownum r__"
);
sb
.
append
(
" from"
);
sb
.
append
(
" ("
);
sb
.
append
(
" select * from datas"
);
sb
.
append
(
" order by datas.name"
);
sb
.
append
(
" ) a"
);
sb
.
append
(
" where rownum < ((:p_page_number * :p_page_size) + 1 )"
);
sb
.
append
(
" )"
);
sb
.
append
(
" where r__ >= (((:p_page_number-1) * :p_page_size) + 1)"
);
Map
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"p_page_number"
,
campaignCustomerDTO
.
getPage
());
param
.
put
(
"p_page_size"
,
campaignCustomerDTO
.
getPageSize
());
customerList
=
namedParameterJdbcTemplate
.
query
(
s
ql
,
param
,
new
BeanPropertyRowMapper
<>(
CustomerDTO
.
class
));
customerList
=
namedParameterJdbcTemplate
.
query
(
s
b
.
toString
()
,
param
,
new
BeanPropertyRowMapper
<>(
CustomerDTO
.
class
));
}
catch
(
Exception
e
)
{
return
null
;
}
...
...
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
View file @
0c65e1b0
...
...
@@ -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/resources/sql/campaign-mng/campaign-agents-by-params.sql
View file @
0c65e1b0
...
...
@@ -3,30 +3,7 @@ SELECT
a
.
USER_NAME
userName
,
a
.
STATUS
status
,
a
.
FULL_NAME
fullName
,
-- a.USER_TYPE_ID userTypeId,
-- a.CREATE_DATE createDate,
-- a.DESCRIPTION description,
-- a.STAFF_CODE staffCode,
-- a.MANAGER_ID managerId,
-- a.LOCATION_ID locationId,
-- a.DEPT_ID deptId,
-- a.DEPT_LEVEL deptLevel,
-- a.POS_ID posId,
-- a.DEPT_NAME deptName,
-- a.GROUP_ID groupId,
-- a.SITE_ID siteId,
a
.
COMPANY_SITE_ID
companySiteId
,
-- a.AGENT_TYPE agentType,
-- a.MOBILE_NUMBER mobileNumber,
-- a.FACEBOOK_ID facebookId,
-- a.LOGIN_TYPE loginType,
-- a.GOOGLE_ID googleId,
-- a.EMAIL email,
-- a.AVAILABLE_TICKET availableTicket,
-- a.USER_KAZOO_ID userKazooId,
b
.
FILTER_TYPE
filterType
,
b
.
CAMPAIGN_AGENT_ID
campaignAgentId
FROM
VSA_USERS
a
-- LEFT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID
-- WHERE 1 = 1
-- AND a.COMPANY_SITE_ID = :p_company_site_id
src/main/resources/sql/campaign-mng/campaign-customer-detail-by-params.sql
View file @
0c65e1b0
...
...
@@ -14,12 +14,12 @@ select
b
.
IPCC_STATUS
ipccStatus
,
c
.
MOBILE
mobileNumber
,
d
.
EMAIL
email
from
CUSTOMER_LIST_MAPPING
a
from
CUSTOMER_LIST_MAPPING
a
join
CUSTOMER
b
on
a
.
CUSTOMER_ID
=
b
.
CUSTOMER_ID
left
join
(
SELECT
CUSTOMER_ID
,
LISTAGG
(
CONTACT
,
', '
)
WITHIN
GROUP
(
ORDER
BY
NULL
)
AS
MOBILE
FROM
CUSTOMER_CONTACT
WHERE
CONTACT_TYPE
=
5
GROUP
BY
CUSTOMER_ID
)
c
on
b
.
CUSTOMER_ID
=
c
.
CUSTOMER_ID
left
join
(
SELECT
CUSTOMER_ID
,
LISTAGG
(
CONTACT
,
', '
)
WITHIN
GROUP
(
ORDER
BY
NULL
)
AS
EMAIL
FROM
CUSTOMER_CONTACT
WHERE
CONTACT_TYPE
=
2
GROUP
BY
CUSTOMER_ID
)
d
on
b
.
CUSTOMER_ID
=
d
.
CUSTOMER_ID
where
1
=
1
where
1
=
1
and
a
.
COMPANY_SITE_ID
=
:
p_company_site_id
and
a
.
CUSTOMER_LIST_ID
=
:
p_customer_list_id
src/main/resources/sql/campaign-status-mng/findAll-CampaignCompleteCode.sql
View file @
0c65e1b0
...
...
@@ -19,8 +19,8 @@ SELECT
CHANEL
chanel
FROM
CAMPAIGN_COMPLETE_CODE
where
1
=
1
FROM
CAMPAIGN_COMPLETE_CODE
where
1
=
1
AND
STATUS
=
1
and
COMPANY_SITE_ID
=
:
p_company_site_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