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
9be1cbc9
Commit
9be1cbc9
authored
5 years ago
by
Vu Duy Anh
Browse files
Options
Browse Files
Download
Plain Diff
anhvd accept merge
parents
f819903b
1d26b209
Changes
15
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
162 additions
and
99 deletions
+162
-99
src/main/java/com/viettel/campaign/repository/ccms_full/CampaignCustomerRepository.java
...aign/repository/ccms_full/CampaignCustomerRepository.java
+17
-19
src/main/java/com/viettel/campaign/repository/ccms_full/CampaignExecuteRepository.java
...paign/repository/ccms_full/CampaignExecuteRepository.java
+2
-5
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignExecuteRepositoryImp.java
...pository/ccms_full/impl/CampaignExecuteRepositoryImp.java
+37
-32
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignRepositoryImpl.java
...ign/repository/ccms_full/impl/CampaignRepositoryImpl.java
+2
-2
src/main/java/com/viettel/campaign/service/CampaignExecuteService.java
.../com/viettel/campaign/service/CampaignExecuteService.java
+3
-0
src/main/java/com/viettel/campaign/service/CampaignService.java
...in/java/com/viettel/campaign/service/CampaignService.java
+1
-2
src/main/java/com/viettel/campaign/service/impl/CampaignExecuteServiceImp.java
...ttel/campaign/service/impl/CampaignExecuteServiceImp.java
+37
-3
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
...om/viettel/campaign/service/impl/CampaignServiceImpl.java
+4
-20
src/main/java/com/viettel/campaign/web/dto/ContactCusResDTO.java
...n/java/com/viettel/campaign/web/dto/ContactCusResDTO.java
+30
-0
src/main/java/com/viettel/campaign/web/dto/FieldsToShowDTO.java
...in/java/com/viettel/campaign/web/dto/FieldsToShowDTO.java
+7
-7
src/main/java/com/viettel/campaign/web/rest/CampaignController.java
...ava/com/viettel/campaign/web/rest/CampaignController.java
+14
-7
src/main/resources/i18n/language_en.properties
src/main/resources/i18n/language_en.properties
+3
-0
src/main/resources/i18n/language_vi.properties
src/main/resources/i18n/language_vi.properties
+3
-0
src/main/resources/sql/campaign-mng/get-list-fields-not-show.sql
...n/resources/sql/campaign-mng/get-list-fields-not-show.sql
+1
-1
src/main/resources/sql/campaign-mng/get-list-fields-to-show.sql
...in/resources/sql/campaign-mng/get-list-fields-to-show.sql
+1
-1
No files found.
src/main/java/com/viettel/campaign/repository/ccms_full/CampaignCustomerRepository.java
View file @
9be1cbc9
...
...
@@ -13,28 +13,26 @@ import java.util.List;
@Repository
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
interface
CampaignCustomerRepository
extends
JpaRepository
<
CampaignCustomer
,
Long
>,
CampaignCustomerRepositoryCustom
{
@Query
(
value
=
"SELECT COUNT(*) "
+
" FROM CAMPAIGN_CUSTOMER CC "
+
" JOIN CAMPAIGN C ON CC.CAMPAIGN_ID = C.CAMPAIGN_ID "
+
" LEFT JOIN CAMPAIGN_COMPLETE_CODE CCC ON CC.STATUS = CCC.COMPLETE_VALUE"
+
" WHERE CC.COMPANY_SITE_ID = :companySiteId "
+
" AND CC.AGENT_ID = :agentId"
+
" AND C.STATUS = 2 "
+
" AND CC.RECALL_TIME <= SYSDATE "
+
" AND CCC.IS_RECALL = 1"
,
nativeQuery
=
true
)
Long
countRecallCustomer
(
@Param
(
"companySiteId"
)
Long
pCompanySiteId
,
@Param
(
"agentId"
)
Long
agentId
);
@Query
(
value
=
"SELECT COUNT(*) "
+
"FROM CAMPAIGN_CUSTOMER CC JOIN CAMPAIGN_COMPLETE_CODE CCC ON CC.CAMPAIGN_ID = CCC.CAMPAIGN_ID "
+
"WHERE CC.STATUS = 3 AND CC.CAMPAIGN_ID = :campaignId AND CC.CUSTOMER_ID = :customerId AND CCC.IS_RECALL = 1 AND CCC.STATUS = 1 "
,
nativeQuery
=
true
)
"WHERE CC.CAMPAIGN_ID = :campaignId "
+
"AND CC.CUSTOMER_ID = :customerId "
+
"AND CC.STATUS = 3 "
+
"AND CCC.IS_RECALL = 1 "
+
"AND CCC.STATUS = 1 "
,
nativeQuery
=
true
)
Long
getCustomerRecall
(
@Param
(
"campaignId"
)
Long
campaignId
,
@Param
(
"customerId"
)
Long
customerId
);
@Query
(
value
=
"SELECT cc.customer_id \n"
+
"FROM campaign_customer cc LEFT JOIN receive_cust_log cl ON cc.customer_id = cl.customer_id\n"
+
"WHERE cc.campaign_id = :campaignId \n"
+
" AND cc.agent_id = :agentId \n"
+
" AND cc.in_campaign_status = 1 \n"
+
" AND cl.customer_id IS NULL \n"
+
" AND EXISTS(SELECT 1 \n"
+
" FROM campaign_complete_code ccc \n"
+
" WHERE cc.status = ccc.complete_value \n"
+
" AND ccc.status = 1 \n"
+
" AND ccc.is_recall = 1 \n"
+
" AND ccc.complete_type = 2 \n"
+
" AND ccc.company_site_id = :companySiteId) \n"
+
" AND cc.recall_time <= SYSDATE\n"
+
" AND cc.recall_time + interval :apParam MINUTE >= SYSDATE"
,
nativeQuery
=
true
)
List
<
CampaignCustomer
>
getCustomerRecallDate
(
@Param
(
"campaignId"
)
Long
campaignId
,
@Param
(
"agentId"
)
Long
agentId
,
@Param
(
"companySiteId"
)
Long
companySiteId
,
@Param
(
"apParam"
)
String
apParam
);
CampaignCustomer
findCampaignCustomerByCampaignCustomerId
(
Long
id
);
}
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/repository/ccms_full/CampaignExecuteRepository.java
View file @
9be1cbc9
package
com.viettel.campaign.repository.ccms_full
;
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.*
;
import
com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Repository
;
...
...
@@ -23,7 +20,7 @@ public interface CampaignExecuteRepository {
ResultDTO
getInteractiveResult
(
CampaignRequestDTO
dto
);
List
<
ContactCus
tResult
DTO
>
getExcelInteractiveResult
(
CampaignRequestDTO
dto
);
List
<
ContactCus
Res
DTO
>
getExcelInteractiveResult
(
CampaignRequestDTO
dto
);
List
<
ContactCustResultDTO
>
getContactCustById
(
CampaignRequestDTO
dto
);
//</editor-fold: hungtt>
...
...
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignExecuteRepositoryImp.java
View file @
9be1cbc9
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/repository/ccms_full/impl/CampaignRepositoryImpl.java
View file @
9be1cbc9
...
...
@@ -519,7 +519,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
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
(
" where columnName not in (select column_name from campaign_customerlist_column
where column_name is not null
)"
);
stringBuilder
.
append
(
" union all"
);
stringBuilder
.
append
(
" select title columnName, 0 isFix "
);
stringBuilder
.
append
(
" from customize_fields, dual"
);
...
...
@@ -553,7 +553,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
// 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
(
" where campaign_id = :p_campaign_id
and column_name is not null
"
);
sqlBuilder
.
append
(
" union all"
);
sqlBuilder
.
append
(
" select customize_field_title columnName, 0 isFix"
);
sqlBuilder
.
append
(
" from campaign_customerlist_column"
);
...
...
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/service/CampaignExecuteService.java
View file @
9be1cbc9
...
...
@@ -36,4 +36,7 @@ public interface CampaignExecuteService {
ResultDTO
callCustomer
(
ContactCustResultDTO
dto
);
ResultDTO
countRecallCustomer
(
Long
companySiteId
,
Long
agentId
);
ResultDTO
getCustomerRecall
(
Long
campaignId
,
Long
customerId
);
}
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/service/CampaignService.java
View file @
9be1cbc9
...
...
@@ -30,8 +30,6 @@ public interface CampaignService {
ResultDTO
addNewCampaign
(
CampaignDTO
campaignDTO
);
Map
countRecallCustomer
(
Long
companySiteId
,
Long
agentId
);
ResultDTO
findCampaignById
(
Long
campaignId
);
ResultDTO
changeCampaignStatus
(
CampaignDTO
dto
);
...
...
@@ -57,4 +55,5 @@ public interface CampaignService {
ResultDTO
getListFieldsToShow
(
CampaignRequestDTO
dto
);
//</editor-fold>
}
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/service/impl/CampaignExecuteServiceImp.java
View file @
9be1cbc9
...
...
@@ -110,7 +110,7 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
XSSFWorkbook
exportInteractiveResult
(
CampaignRequestDTO
dto
)
{
Locale
locale
=
Locale
.
forLanguageTag
(
"vi"
);
List
<
ContactCus
tResult
DTO
>
list
=
campaignExecuteRepository
.
getExcelInteractiveResult
(
dto
);
List
<
ContactCus
Res
DTO
>
list
=
campaignExecuteRepository
.
getExcelInteractiveResult
(
dto
);
XSSFWorkbook
workbook
=
new
XSSFWorkbook
();
Sheet
sheet
;
...
...
@@ -194,9 +194,9 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
writeCellContent
(
row
,
styleRow
,
col
++,
rowIndex
);
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
getCampaignCode
());
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
getCampaignName
());
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
get
AgentId
());
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
get
UserName
());
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
getPhoneNumber
());
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
getCustomer
Id
());
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
getCustomer
Name
());
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
getCustomerName
());
writeCellContent
(
row
,
styleRow
,
col
++,
formatter
.
format
(
list
.
get
(
i
).
getCreateTime
()));
writeCellContent
(
row
,
styleRow
,
col
++,
list
.
get
(
i
).
getContactStatus
());
...
...
@@ -495,4 +495,38 @@ public class CampaignExecuteServiceImp implements CampaignExecuteService {
return
result
;
}
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
countRecallCustomer
(
Long
companySiteId
,
Long
agentId
)
{
Long
count
=
campaignCustomerRepository
.
countRecallCustomer
(
companySiteId
,
agentId
);
ResultDTO
resultDTO
=
new
ResultDTO
();
if
(
count
!=
null
)
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
resultDTO
.
setData
(
count
);
}
else
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
resultDTO
.
setData
(
0
);
}
return
resultDTO
;
}
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
getCustomerRecall
(
Long
campaignId
,
Long
customerId
)
{
Long
count
=
campaignCustomerRepository
.
getCustomerRecall
(
campaignId
,
customerId
);
ResultDTO
resultDTO
=
new
ResultDTO
();
if
(
count
!=
null
)
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
resultDTO
.
setData
(
count
);
}
else
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
resultDTO
.
setData
(
0
);
}
return
resultDTO
;
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
View file @
9be1cbc9
...
...
@@ -28,6 +28,7 @@ import java.util.HashMap;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -170,26 +171,6 @@ public class CampaignServiceImpl implements CampaignService {
return
resultDTO
;
}
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
Map
countRecallCustomer
(
Long
companySiteId
,
Long
agentId
)
{
Map
result
=
new
HashMap
();
Long
count
=
campaignRepository
.
countRecallCustomer
(
companySiteId
,
agentId
);
ResultDTO
resultDTO
=
new
ResultDTO
();
if
(
count
!=
null
)
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
result
.
put
(
"info"
,
resultDTO
);
result
.
put
(
"result"
,
count
);
}
else
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
result
.
put
(
"info"
,
resultDTO
);
result
.
put
(
"result"
,
0
);
}
return
result
;
}
@Override
@Transactional
(
DataSourceQualify
.
CCMS_FULL
)
public
ResultDTO
findCampaignById
(
Long
campaignId
)
{
...
...
@@ -524,6 +505,9 @@ public class CampaignServiceImpl implements CampaignService {
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
));
mapColumn
.
put
(
"EMAIL"
,
BundleUtils
.
getLangString
(
"EMAIL"
,
locale
));
mapColumn
.
put
(
"CUSTOMER_TYPE"
,
BundleUtils
.
getLangString
(
"CUSTOMER_TYPE"
,
locale
));
mapColumn
.
put
(
"AVATAR_LINK"
,
BundleUtils
.
getLangString
(
"AVATAR_LINK"
,
locale
));
return
mapColumn
;
}
private
String
generateCampaignCode
(
String
campaignType
,
Short
chanel
)
{
...
...
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/web/dto/ContactCusResDTO.java
0 → 100644
View file @
9be1cbc9
package
com.viettel.campaign.web.dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
java.io.Serializable
;
import
java.util.Date
;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public
class
ContactCusResDTO
implements
Serializable
{
private
Long
contactCustResultId
;
private
String
campaignCode
;
private
String
campaignName
;
private
String
userName
;
private
String
phoneNumber
;
private
String
customerName
;
private
Date
startCall
;
private
Date
createTime
;
private
String
contactStatus
;
private
String
surveyStatus
;
private
String
status
;
private
String
recordStatus
;
private
Long
callTime
;
private
Boolean
enableEdit
;
}
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/web/dto/FieldsToShowDTO.java
View file @
9be1cbc9
...
...
@@ -11,23 +11,23 @@ import java.io.Serializable;
@Setter
@NoArgsConstructor
@AllArgsConstructor
public
class
FieldsToShowDTO
extends
BaseDTO
implements
Serializable
{
public
class
FieldsToShowDTO
implements
Serializable
{
private
Long
campaignCusListColId
;
//
private Long campaignCusListColId;
private
Long
companySiteId
;
//
private Long companySiteId;
private
Long
campaignId
;
//
private Long campaignId;
private
String
columnName
;
private
String
columnTitle
;
private
Long
orderIndex
;
//
private Long orderIndex;
private
Long
customizeFieldId
;
//
private Long customizeFieldId;
private
String
customizeFieldTitle
;
//
private String customizeFieldTitle;
private
Boolean
isFix
;
}
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/web/rest/CampaignController.java
View file @
9be1cbc9
...
...
@@ -96,13 +96,6 @@ public class CampaignController {
return
campaignService
.
addNewCampaign
(
dto
);
}
@GetMapping
(
"/countRecallCustomer"
)
@ResponseBody
public
ResponseEntity
countRecallCustomer
(
@RequestParam
(
"companySiteId"
)
Long
companySiteId
,
@RequestParam
(
"agentId"
)
Long
agentId
)
{
Map
result
=
campaignService
.
countRecallCustomer
(
companySiteId
,
agentId
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
@GetMapping
(
"/findByCampaignId"
)
@ResponseBody
public
ResponseEntity
findByCampaignId
(
@RequestParam
(
"campaignId"
)
Long
campaignId
)
{
...
...
@@ -240,4 +233,18 @@ public class CampaignController {
ResultDTO
resultDTO
=
campaignService
.
getListFieldsToShow
(
dto
);
return
new
ResponseEntity
<>(
resultDTO
,
HttpStatus
.
OK
);
}
@GetMapping
(
"/countRecallCustomer"
)
@ResponseBody
public
ResponseEntity
countRecallCustomer
(
@RequestParam
(
"companySiteId"
)
Long
companySiteId
,
@RequestParam
(
"agentId"
)
Long
agentId
)
{
ResultDTO
result
=
campaignExecuteService
.
countRecallCustomer
(
companySiteId
,
agentId
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
@GetMapping
(
"/getCustomerRecall"
)
@ResponseBody
public
ResponseEntity
getCustomerRecall
(
@RequestParam
(
"campaignId"
)
Long
campaignId
,
@RequestParam
(
"customerId"
)
Long
customerId
)
{
ResultDTO
result
=
campaignExecuteService
.
getCustomerRecall
(
campaignId
,
customerId
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
}
This diff is collapsed.
Click to expand it.
src/main/resources/i18n/language_en.properties
View file @
9be1cbc9
...
...
@@ -64,3 +64,6 @@ CALL_ALLOWED = CALL_ALLOWED
EMAIL_ALLOWED
=
EMAIL_ALLOWED
SMS_ALLOWED
=
SMS_ALLOWED
IPCC_STATUS
=
IPCC_STATUS
EMAIL
=
EMAIL
CUSTOMER_TYPE
=
CUSTOMER_TYPE
AVATAR_LINK
=
AVATAR_LINK
This diff is collapsed.
Click to expand it.
src/main/resources/i18n/language_vi.properties
View file @
9be1cbc9
...
...
@@ -66,3 +66,6 @@ CALL_ALLOWED = CALL_ALLOWED
EMAIL_ALLOWED
=
EMAIL_ALLOWED
SMS_ALLOWED
=
SMS_ALLOWED
IPCC_STATUS
=
IPCC_STATUS
EMAIL
=
EMAIL
CUSTOMER_TYPE
=
CUSTOMER_TYPE
AVATAR_LINK
=
AVATAR_LINK
This diff is collapsed.
Click to expand it.
src/main/resources/sql/campaign-mng/get-list-fields-not-show.sql
View file @
9be1cbc9
...
...
@@ -2,7 +2,7 @@ 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
)
select
*
from
column_name_temp
where
columnName
not
in
(
select
column_name
from
campaign_customerlist_column
where
column_name
is
not
null
)
union
all
select
title
columnName
,
0
isFix
from
customize_fields
,
dual
where
function_code
=
'CUSTOMER'
...
...
This diff is collapsed.
Click to expand it.
src/main/resources/sql/campaign-mng/get-list-fields-to-show.sql
View file @
9be1cbc9
select
to_char
(
column_name
)
columnName
,
1
isFix
from
campaign_customerlist_column
,
dual
where
campaign_id
=
:
p_campaign_id
select
to_char
(
column_name
)
columnName
,
1
isFix
from
campaign_customerlist_column
,
dual
where
campaign_id
=
:
p_campaign_id
and
column_name
is
not
null
union
all
select
customize_field_title
columnName
,
0
isFix
from
campaign_customerlist_column
where
campaign_id
=
:
p_campaign_id
This diff is collapsed.
Click to expand it.
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