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
0ccb72e3
Commit
0ccb72e3
authored
Jul 30, 2019
by
Vu Duy Anh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
anhvd commit service for search campaign
parent
233dcab3
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
409 additions
and
58 deletions
+409
-58
pom.xml
pom.xml
+25
-0
src/main/java/com/viettel/campaign/controller/CampaignController.java
...a/com/viettel/campaign/controller/CampaignController.java
+13
-6
src/main/java/com/viettel/campaign/dto/ResultDTO.java
src/main/java/com/viettel/campaign/dto/ResultDTO.java
+1
-1
src/main/java/com/viettel/campaign/dto/request_dto/CampaignRequestDTO.java
.../viettel/campaign/dto/request_dto/CampaignRequestDTO.java
+30
-0
src/main/java/com/viettel/campaign/repository/CampaignRepositoryCustom.java
...viettel/campaign/repository/CampaignRepositoryCustom.java
+6
-1
src/main/java/com/viettel/campaign/repository/CampaignRepositoryImpl.java
...m/viettel/campaign/repository/CampaignRepositoryImpl.java
+0
-46
src/main/java/com/viettel/campaign/repository/impl/CampaignRepositoryImpl.java
...ttel/campaign/repository/impl/CampaignRepositoryImpl.java
+146
-0
src/main/java/com/viettel/campaign/service/CampaignService.java
...in/java/com/viettel/campaign/service/CampaignService.java
+5
-3
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
...om/viettel/campaign/service/impl/CampaignServiceImpl.java
+13
-1
src/main/java/com/viettel/campaign/utils/Constants.java
src/main/java/com/viettel/campaign/utils/Constants.java
+20
-0
src/main/java/com/viettel/campaign/utils/DateTimeUtil.java
src/main/java/com/viettel/campaign/utils/DateTimeUtil.java
+87
-0
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
+31
-0
src/main/resources/sql/campaign-mng/search-campaign-by-params.sql
.../resources/sql/campaign-mng/search-campaign-by-params.sql
+32
-0
No files found.
pom.xml
View file @
0ccb72e3
...
@@ -156,6 +156,31 @@
...
@@ -156,6 +156,31 @@
<artifactId>
log4j
</artifactId>
<artifactId>
log4j
</artifactId>
<version>
1.2.17
</version>
<version>
1.2.17
</version>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-core
</artifactId>
<version>
2.9.8
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
<version>
2.9.8
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-annotations
</artifactId>
<version>
2.9.8
</version>
</dependency>
<dependency>
<groupId>
joda-time
</groupId>
<artifactId>
joda-time
</artifactId>
</dependency>
</dependencies>
</dependencies>
<dependencyManagement>
<dependencyManagement>
...
...
src/main/java/com/viettel/campaign/controller/CampaignController.java
View file @
0ccb72e3
package
com.viettel.campaign.controller
;
package
com.viettel.campaign.controller
;
import
com.viettel.campaign.dto.ResultDTO
;
import
com.viettel.campaign.dto.request_dto.CampaignRequestDTO
;
import
com.viettel.campaign.model.Campaign
;
import
com.viettel.campaign.service.CampaignService
;
import
com.viettel.campaign.service.CampaignService
;
import
org.apache.log4j.Logger
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.data.domain.Page
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
java.util.Map
;
import
java.util.Map
;
@Controller
@
Rest
Controller
@RequestMapping
(
"/ipcc/campaign"
)
@RequestMapping
(
"/ipcc/campaign"
)
public
class
CampaignController
{
public
class
CampaignController
{
...
@@ -28,4 +28,11 @@ public class CampaignController {
...
@@ -28,4 +28,11 @@ public class CampaignController {
Map
result
=
campaignService
.
searchCampaignExecute
(
page
,
pageSize
,
sort
,
agentId
);
Map
result
=
campaignService
.
searchCampaignExecute
(
page
,
pageSize
,
sort
,
agentId
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
}
@RequestMapping
(
value
=
"/search"
,
method
=
RequestMethod
.
POST
)
public
ResponseEntity
<
ResultDTO
>
search
(
@RequestBody
CampaignRequestDTO
requestDto
)
{
ResultDTO
result
=
campaignService
.
search
(
requestDto
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
}
}
src/main/java/com/viettel/campaign/dto/ResultDTO.java
View file @
0ccb72e3
...
@@ -12,6 +12,6 @@ public class ResultDTO {
...
@@ -12,6 +12,6 @@ public class ResultDTO {
private
String
errorCode
;
private
String
errorCode
;
private
String
description
;
private
String
description
;
private
List
listData
=
new
ArrayList
();
private
List
<?>
listData
=
new
ArrayList
();
private
Object
data
;
private
Object
data
;
}
}
src/main/java/com/viettel/campaign/dto/request_dto/CampaignRequestDTO.java
0 → 100644
View file @
0ccb72e3
package
com.viettel.campaign.dto.request_dto
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public
class
CampaignRequestDTO
{
int
pageSize
;
int
page
;
String
sort
;
String
campaignCode
;
String
campaignName
;
Short
status
;
Date
fromDateFr
;
Date
fromDateTo
;
Date
toDateTo
;
Date
toDateFr
;
Long
numOfCusFr
;
Long
numOfCusTo
;
Short
type
;
Short
chanel
;
}
src/main/java/com/viettel/campaign/repository/CampaignRepositoryCustom.java
View file @
0ccb72e3
package
com.viettel.campaign.repository
;
package
com.viettel.campaign.repository
;
import
com.viettel.campaign.dto.CampaignDTO
;
import
com.viettel.campaign.dto.CampaignDTO
;
import
com.viettel.campaign.dto.ResultDTO
;
import
com.viettel.campaign.dto.request_dto.CampaignRequestDTO
;
import
com.viettel.campaign.model.Campaign
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.List
;
public
interface
CampaignRepositoryCustom
{
public
interface
CampaignRepositoryCustom
{
List
<
CampaignDTO
>
searchCampaignExecute
(
String
agentId
,
Pageable
pageable
);
List
<
CampaignDTO
>
searchCampaignExecute
(
String
agentId
,
Pageable
pageable
);
ResultDTO
search
(
CampaignRequestDTO
requestDto
);
}
}
src/main/java/com/viettel/campaign/repository/CampaignRepositoryImpl.java
deleted
100644 → 0
View file @
233dcab3
package
com.viettel.campaign.repository
;
import
com.viettel.campaign.dto.CampaignDTO
;
import
com.viettel.campaign.model.Campaign
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
javax.persistence.EntityManager
;
import
javax.persistence.Query
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
CampaignRepositoryImpl
implements
CampaignRepositoryCustom
{
@Autowired
EntityManager
entityManager
;
@Override
public
List
<
CampaignDTO
>
searchCampaignExecute
(
String
agentId
,
Pageable
pageable
)
{
List
<
CampaignDTO
>
lst
=
new
ArrayList
<>();
String
expression
=
new
StringBuilder
()
.
append
(
" SELECT C.CAMPAIGN_ID, C.CAMPAIGN_NAME, C.STATUS "
)
.
append
(
" FROM CAMPAIGN C "
)
.
append
(
" INNER JOIN CAMPAIGN_AGENT CA ON C.CAMPAIGN_ID = CA.CAMPAIGN_ID "
)
.
append
(
" WHERE 1 = 1 "
)
.
append
(
" AND CA.AGENT_ID = :pAgentId "
)
.
append
(
" AND C.STATUS IN (2,3) "
)
.
toString
();
Query
query
=
entityManager
.
createNativeQuery
(
expression
);
query
.
setParameter
(
"pAgentId"
,
agentId
);
List
<
Object
[]>
data
=
query
.
getResultList
();
for
(
Object
[]
obj
:
data
)
{
CampaignDTO
item
=
new
CampaignDTO
();
item
.
setCampaignId
((
Long
)
obj
[
0
]);
item
.
setCampaignName
((
String
)
obj
[
1
]);
item
.
setStatus
((
Short
)
obj
[
0
]);
lst
.
add
(
item
);
}
return
lst
;
}
}
src/main/java/com/viettel/campaign/repository/impl/CampaignRepositoryImpl.java
0 → 100644
View file @
0ccb72e3
package
com.viettel.campaign.repository.impl
;
import
com.viettel.campaign.dto.CampaignDTO
;
import
com.viettel.campaign.dto.ResultDTO
;
import
com.viettel.campaign.dto.request_dto.CampaignRequestDTO
;
import
com.viettel.campaign.repository.CampaignRepositoryCustom
;
import
com.viettel.campaign.utils.Constants
;
import
com.viettel.campaign.utils.DataUtil
;
import
com.viettel.campaign.utils.DateTimeUtil
;
import
com.viettel.campaign.utils.SQLBuilder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.*
;
import
org.springframework.stereotype.Repository
;
import
javax.persistence.EntityManager
;
import
javax.persistence.Query
;
import
java.util.ArrayList
;
import
java.util.List
;
@Repository
public
class
CampaignRepositoryImpl
implements
CampaignRepositoryCustom
{
@Autowired
EntityManager
entityManager
;
@Override
public
List
<
CampaignDTO
>
searchCampaignExecute
(
String
agentId
,
Pageable
pageable
)
{
List
<
CampaignDTO
>
lst
=
new
ArrayList
<>();
String
expression
=
new
StringBuilder
()
.
append
(
" SELECT C.CAMPAIGN_ID, C.CAMPAIGN_NAME, C.STATUS "
)
.
append
(
" FROM CAMPAIGN C "
)
.
append
(
" INNER JOIN CAMPAIGN_AGENT CA ON C.CAMPAIGN_ID = CA.CAMPAIGN_ID "
)
.
append
(
" WHERE 1 = 1 "
)
.
append
(
" AND CA.AGENT_ID = :pAgentId "
)
.
append
(
" AND C.STATUS IN (2,3) "
)
.
toString
();
Query
query
=
entityManager
.
createNativeQuery
(
expression
);
query
.
setParameter
(
"pAgentId"
,
agentId
);
List
<
Object
[]>
data
=
query
.
getResultList
();
for
(
Object
[]
obj
:
data
)
{
CampaignDTO
item
=
new
CampaignDTO
();
item
.
setCampaignId
((
Long
)
obj
[
0
]);
item
.
setCampaignName
((
String
)
obj
[
1
]);
item
.
setStatus
((
Short
)
obj
[
0
]);
lst
.
add
(
item
);
}
return
lst
;
}
@Override
public
ResultDTO
search
(
CampaignRequestDTO
requestDto
)
{
ResultDTO
result
=
new
ResultDTO
();
try
{
String
sqlStr
=
SQLBuilder
.
getSqlQueryById
(
SQLBuilder
.
SQL_MODULE_CAMPAIGN_MNG
,
"search-campaign-by-params"
);
// sqlStr.append(" SELECT CAMPAIGN_CODE campaignCode, CAMPAIGN_NAME campaignName, CAMPAIGN_TYPE campaignType, CHANEL chanel, START_TIME startTime, END_TIME endTime, CUSTOMER_NUMBER customerNumber, STATUS status FROM CAMPAIGN WHERE 1 = 1 ");
// if(!DataUtil.isNullOrEmpty(requestDto.getCampaignCode())) { sqlStr.append(" AND UPPER(CAMPAIGN_CODE) LIKE :code"); }
// if(!DataUtil.isNullOrEmpty(requestDto.getCampaignName())) { sqlStr.append(" AND UPPER(CAMPAIGN_NAME) LIKE :name"); }
// if(requestDto.getStatus() != null) { sqlStr.append(" AND STATUS = :status"); }
// if(requestDto.getFromDateFr() != null && DateTimeUtil.isValid(requestDto.getFromDateFr().getTime())) { sqlStr.append(" AND START_TIME >= :frDateFr"); }
// if(requestDto.getFromDateTo() != null && DateTimeUtil.isValid(requestDto.getFromDateTo().getTime())) { sqlStr.append(" AND START_TIME <= :frDateTo"); }
// if(requestDto.getToDateFr() != null && DateTimeUtil.isValid(requestDto.getToDateFr().getTime())) { sqlStr.append(" AND END_TIME >= :toDateFr"); }
// if(requestDto.getToDateTo() != null && DateTimeUtil.isValid(requestDto.getToDateTo().getTime())) { sqlStr.append(" AND END_TIME <= :toDateTo"); }
// if(!DataUtil.isNullOrZero(requestDto.getNumOfCusFr())) {
//// sqlStr.append(" AND ")
// }
// if(!DataUtil.isNullOrZero(requestDto.getNumOfCusTo())) {
//
// }
// if(requestDto.getType() != null) { sqlStr.append(" AND CAMPAIGN_TYPE = :type"); }
// if(requestDto.getChanel() != null) { sqlStr.append(" AND CHANEL = :chanel"); }
Query
query
=
entityManager
.
createNativeQuery
(
sqlStr
,
CampaignDTO
.
class
);
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getCampaignCode
()))
{
query
.
setParameter
(
"p_code"
,
"%"
+
requestDto
.
getCampaignCode
().
toUpperCase
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\\\%"
)
.
replaceAll
(
"_"
,
"\\\\_"
)
+
"%"
);
}
if
(!
DataUtil
.
isNullOrEmpty
(
requestDto
.
getCampaignName
()))
{
query
.
setParameter
(
"p_name"
,
"%"
+
requestDto
.
getCampaignName
().
toUpperCase
()
.
replace
(
"\\"
,
"\\\\"
)
.
replaceAll
(
"%"
,
"\\\\%"
)
.
replaceAll
(
"_"
,
"\\\\_"
)
+
"%"
);
}
if
(
requestDto
.
getStatus
()
!=
null
)
{
query
.
setParameter
(
"p_status"
,
requestDto
.
getStatus
());
}
if
(
requestDto
.
getFromDateFr
()
!=
null
&&
DateTimeUtil
.
isValid
(
requestDto
.
getFromDateFr
().
getTime
()))
{
query
.
setParameter
(
"p_frDateFr"
,
requestDto
.
getFromDateFr
());
}
if
(
requestDto
.
getFromDateTo
()
!=
null
&&
DateTimeUtil
.
isValid
(
requestDto
.
getFromDateTo
().
getTime
()))
{
query
.
setParameter
(
"p_frDateTo"
,
requestDto
.
getFromDateTo
());
}
if
(
requestDto
.
getToDateFr
()
!=
null
&&
DateTimeUtil
.
isValid
(
requestDto
.
getToDateFr
().
getTime
()))
{
query
.
setParameter
(
"p_toDateFr"
,
requestDto
.
getToDateFr
());
}
if
(
requestDto
.
getToDateTo
()
!=
null
&&
DateTimeUtil
.
isValid
(
requestDto
.
getToDateTo
().
getTime
()))
{
query
.
setParameter
(
"p_toDateTo"
,
requestDto
.
getToDateTo
());
}
if
(
requestDto
.
getType
()
!=
null
)
{
query
.
setParameter
(
"p_type"
,
requestDto
.
getType
());
}
if
(
requestDto
.
getChanel
()
!=
null
)
{
query
.
setParameter
(
"p_chanel"
,
requestDto
.
getChanel
());
}
List
<
CampaignDTO
>
dataCount
=
query
.
getResultList
();
long
count
=
dataCount
.
size
();
Pageable
pageable
=
buildPageable
(
requestDto
);
if
(
pageable
!=
null
)
{
query
.
setFirstResult
(
pageable
.
getPageNumber
()
*
pageable
.
getPageSize
());
query
.
setMaxResults
(
pageable
.
getPageSize
());
}
List
<
CampaignDTO
>
data
=
query
.
getResultList
();
Page
<
CampaignDTO
>
dataPage
=
new
PageImpl
<>(
data
,
pageable
,
count
);
result
.
setData
(
dataPage
);
result
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
result
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
return
result
;
}
catch
(
Exception
ex
)
{
}
result
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
result
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
return
null
;
}
private
Pageable
buildPageable
(
CampaignRequestDTO
obj
)
{
Pageable
pageable
=
null
;
String
[]
sorts
=
obj
.
getSort
().
split
(
","
);
Sort
sort
=
new
Sort
(
Sort
.
Direction
.
fromString
(
sorts
[
1
]),
sorts
[
0
]);
pageable
=
new
PageRequest
(
obj
.
getPage
(),
obj
.
getPageSize
(),
sort
);
return
pageable
;
}
}
src/main/java/com/viettel/campaign/service/CampaignService.java
View file @
0ccb72e3
package
com.viettel.campaign.service
;
package
com.viettel.campaign.service
;
import
org.springframework.stereotype.Service
;
import
com.viettel.campaign.dto.ResultDTO
;
import
com.viettel.campaign.dto.request_dto.CampaignRequestDTO
;
import
com.viettel.campaign.model.Campaign
;
import
org.springframework.data.domain.Page
;
import
java.util.Map
;
import
java.util.Map
;
@Service
public
interface
CampaignService
{
public
interface
CampaignService
{
Map
searchCampaignExecute
(
int
page
,
int
pageSize
,
String
sort
,
String
agentId
);
Map
searchCampaignExecute
(
int
page
,
int
pageSize
,
String
sort
,
String
agentId
);
ResultDTO
search
(
CampaignRequestDTO
requestDto
);
}
}
src/main/java/com/viettel/campaign/service/CampaignServiceImpl.java
→
src/main/java/com/viettel/campaign/service/
impl/
CampaignServiceImpl.java
View file @
0ccb72e3
package
com.viettel.campaign.service
;
package
com.viettel.campaign.service
.impl
;
import
com.viettel.campaign.dto.CampaignDTO
;
import
com.viettel.campaign.dto.CampaignDTO
;
import
com.viettel.campaign.dto.ResultDTO
;
import
com.viettel.campaign.dto.request_dto.CampaignRequestDTO
;
import
com.viettel.campaign.model.Campaign
;
import
com.viettel.campaign.repository.CampaignRepository
;
import
com.viettel.campaign.repository.CampaignRepository
;
import
com.viettel.campaign.service.CampaignService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
@Service
public
class
CampaignServiceImpl
implements
CampaignService
{
public
class
CampaignServiceImpl
implements
CampaignService
{
@Autowired
@Autowired
...
@@ -30,4 +37,9 @@ public class CampaignServiceImpl implements CampaignService {
...
@@ -30,4 +37,9 @@ public class CampaignServiceImpl implements CampaignService {
return
result
;
return
result
;
}
}
@Override
public
ResultDTO
search
(
CampaignRequestDTO
requestDto
)
{
return
campaignRepository
.
search
(
requestDto
);
}
}
}
src/main/java/com/viettel/campaign/utils/Constants.java
0 → 100644
View file @
0ccb72e3
package
com.viettel.campaign.utils
;
/**
* @author anhvd_itsol
*/
public
class
Constants
{
public
interface
ApiErrorCode
{
String
ERROR
=
"01"
;
String
SUCCESS
=
"00"
;
}
public
interface
ApiErrorDesc
{
String
ERROR
=
"ERROR"
;
String
SUCCESS
=
"SUCCESS"
;
}
public
interface
FileType
{
String
pdf
=
"pdf"
;
String
xls
=
"xls"
;
String
xlsx
=
"xlsx"
;
}
}
src/main/java/com/viettel/campaign/utils/DateTimeUtil.java
0 → 100644
View file @
0ccb72e3
package
com.viettel.campaign.utils
;
import
org.apache.logging.log4j.util.Strings
;
import
org.joda.time.format.DateTimeFormat
;
import
java.util.Date
;
import
java.util.TimeZone
;
import
java.util.concurrent.atomic.AtomicReference
;
import
static
java
.
util
.
concurrent
.
TimeUnit
.
MILLISECONDS
;
import
static
java
.
util
.
concurrent
.
TimeUnit
.
NANOSECONDS
;
/**
* @author anhvd_itsol
*/
public
final
class
DateTimeUtil
{
public
static
final
long
DAY_IN_MILLIS
=
86400000L
;
public
static
interface
DateTimeProvider
{
long
now
();
}
private
static
final
AtomicReference
<
DateTimeProvider
>
PROVIDER
=
new
AtomicReference
<
DateTimeProvider
>();
public
static
final
DateTimeProvider
getProvider
()
{
return
PROVIDER
.
get
();
}
static
{
PROVIDER
.
set
(
new
DateTimeProvider
()
{
@Override
public
long
now
()
{
return
System
.
currentTimeMillis
();
}
});
}
public
static
Date
currentTime
()
{
return
new
Date
(
now
());
}
public
static
Date
currentDate
()
{
return
date
(
now
());
}
public
static
final
Date
date
(
final
long
millis
)
{
final
int
offset
=
getTimeZoneOffset
(
millis
);
long
t
=
millis
-
((
t
=
(
millis
+
offset
)
%
DAY_IN_MILLIS
)
<
0
?
DAY_IN_MILLIS
+
t
:
t
);
t
=
t
+
(
offset
-
getTimeZoneOffset
(
t
));
return
new
Date
(
t
);
}
public
static
int
getTimeZoneOffset
(
long
millis
)
{
return
TimeZone
.
getDefault
().
getOffset
(
millis
);
}
public
static
long
now
()
{
return
getProvider
().
now
();
}
public
static
long
toMillis
(
long
nanos
)
{
return
MILLISECONDS
.
convert
(
nanos
,
NANOSECONDS
);
}
public
static
long
currentTimeMillis
()
{
return
getProvider
().
now
();
}
/**
* Format
*/
public
static
String
format
(
String
pattern
,
long
millis
)
{
return
DateTimeFormat
.
forPattern
(
pattern
).
print
(
millis
);
}
public
static
String
format
(
String
pattern
,
Date
date
,
String
defaultValue
)
{
if
(
date
==
null
)
return
defaultValue
;
return
format
(
pattern
,
date
.
getTime
());
}
/**
*
*/
public
static
boolean
isValid
(
final
long
millis
)
{
return
millis
>
0L
;
}
/**
*
*/
public
static
long
parse
(
final
String
pattern
,
String
date
)
{
return
DateTimeFormat
.
forPattern
(
pattern
).
parseMillis
(
date
);
}
public
static
Date
parseDate
(
final
String
pattern
,
String
date
)
{
return
Strings
.
isEmpty
(
date
)
?
null
:
date
(
parse
(
pattern
,
date
));
}
/**
*
*/
}
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
0 → 100644
View file @
0ccb72e3
package
com.viettel.campaign.utils
;
import
java.io.File
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
import
java.io.IOException
;
import
org.springframework.core.io.ClassPathResource
;
/**
* @author anhvd_itsol
*/
public
class
SQLBuilder
{
public
static
final
String
SQL_MODULE_CAMPAIGN_MNG
=
"campaign-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
;
}
}
src/main/resources/sql/campaign-mng/search-campaign-by-params.sql
0 → 100644
View file @
0ccb72e3
SELECT
CAMPAIGN_CODE
campaignCode
,
CAMPAIGN_NAME
campaignName
,
CAMPAIGN_TYPE
campaignType
,
CHANEL
chanel
,
START_TIME
startTime
,
END_TIME
endTime
,
CUSTOMER_NUMBER
customerNumber
,
STATUS
status
FROM
CAMPAIGN
WHERE
1
=
1
AND
(:
p_code
IS
NULL
OR
(:
p_code
IS
NOT
NULL
AND
UPPER
(
CAMPAIGN_CODE
)
LIKE
:
p_code
))
AND
(:
p_name
IS
NULL
OR
(:
p_name
IS
NOT
NULL
AND
UPPER
(
CAMPAIGN_NAME
)
LIKE
:
p_name
))
AND
(:
p_status
IS
NULL
OR
(:
p_status
IS
NOT
NULL
AND
STATUS
=
:
status
))
AND
((:
p_frDateFr
IS
NULL
AND
:
p_frDateTo
IS
NULL
)
OR
((:
p_frDateFr
IS
NOT
NULL
AND
:
p_frDateTo
IS
NOT
NULL
)
AND
(
trunc
(
START_TIME
)
BETWEEN
TO_DATE
(:
p_frDateFr
,
'YYYYMMDD'
)
AND
TO_DATE
(:
p_frDateTo
,
'YYYYMMDD'
)))
OR
((:
p_frDateFr
IS
NOT
NULL
AND
:
p_frDateTo
IS
NULL
)
AND
(
trunc
(
START_TIME
)
>=
TO_DATE
(:
p_frDateFr
,
'YYYYMMDD'
)))
OR
((:
p_frDateFr
IS
NULL
AND
:
p_frDateTo
IS
NOT
NULL
)
AND
(
trunc
(
START_TIME
)
<=
TO_DATE
(:
p_frDateTo
,
'YYYYMMDD'
)))
)
AND
((:
p_toDateFr
IS
NULL
AND
:
p_toDateTo
IS
NULL
)
OR
((:
p_toDateFr
IS
NOT
NULL
AND
:
p_toDateTo
IS
NOT
NULL
)
AND
(
trunc
(
END_TIME
)
BETWEEN
TO_DATE
(:
p_toDateFr
,
'YYYYMMDD'
)
AND
TO_DATE
(:
p_toDateTo
,
'YYYYMMDD'
)))
OR
((:
p_toDateFr
IS
NOT
NULL
AND
:
p_toDateTo
IS
NULL
)
AND
(
trunc
(
END_TIME
)
>=
TO_DATE
(:
p_toDateFr
,
'YYYYMMDD'
)))
OR
((:
p_toDateFr
IS
NULL
AND
:
p_toDateTo
IS
NOT
NULL
)
AND
(
trunc
(
END_TIME
)
<=
TO_DATE
(:
p_toDateTo
,
'YYYYMMDD'
)))
)
AND
(:
p_type
IS
NULL
OR
(:
p_type
IS
NOT
NULL
AND
CAMPAIGN_TYPE
=
:
p_type
))
AND
(:
p_chanel
IS
NULL
OR
(:
p_chanel
IS
NOT
NULl
AND
CHANEL
=
:
p_chanel
))
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