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
942114bc
Commit
942114bc
authored
Aug 09, 2019
by
Nguyen Ha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge branch 'master' of /Users/hanv_itsol/VTT_CAMPAIGN/service-campaign with conflicts.
parent
4e5db0ba
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
196 additions
and
19 deletions
+196
-19
campaign.iml
campaign.iml
+17
-0
pom.xml
pom.xml
+11
-0
src/main/java/com/viettel/campaign/config/JobConfig.java
src/main/java/com/viettel/campaign/config/JobConfig.java
+27
-19
src/main/java/com/viettel/campaign/repository/CampaignRepository.java
...a/com/viettel/campaign/repository/CampaignRepository.java
+12
-0
src/main/java/com/viettel/campaign/repository/ProcessConfigRepository.java
.../viettel/campaign/repository/ProcessConfigRepository.java
+19
-0
src/main/java/com/viettel/campaign/service/CampaignService.java
...in/java/com/viettel/campaign/service/CampaignService.java
+11
-0
src/main/java/com/viettel/campaign/service/ProcessConfigService.java
...va/com/viettel/campaign/service/ProcessConfigService.java
+38
-0
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
...om/viettel/campaign/service/impl/CampaignServiceImpl.java
+25
-0
src/main/java/com/viettel/campaign/utils/DateTimeUtil.java
src/main/java/com/viettel/campaign/utils/DateTimeUtil.java
+36
-0
No files found.
campaign.iml
0 → 100644
View file @
942114bc
<?xml version="1.0" encoding="UTF-8"?>
<module
org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule=
"true"
type=
"JAVA_MODULE"
version=
"4"
>
<component
name=
"FacetManager"
>
<facet
type=
"Spring"
name=
"Spring"
>
<configuration
/>
</facet>
<facet
type=
"web"
name=
"Web"
>
<configuration>
<webroots
/>
<sourceRoots>
<root
url=
"file://$MODULE_DIR$/src/main/java"
/>
<root
url=
"file://$MODULE_DIR$/src/main/resources"
/>
</sourceRoots>
</configuration>
</facet>
</component>
</module>
\ No newline at end of file
pom.xml
View file @
942114bc
...
@@ -201,6 +201,17 @@
...
@@ -201,6 +201,17 @@
<artifactId>
poi-ooxml
</artifactId>
<artifactId>
poi-ooxml
</artifactId>
<version>
3.17
</version>
<version>
3.17
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.cronutils
</groupId>
<artifactId>
cron-utils
</artifactId>
<version>
9.0.1
</version>
</dependency>
<dependency>
<groupId>
org.quartz-scheduler
</groupId>
<artifactId>
quartz
</artifactId>
<version>
2.3.0
</version>
</dependency>
</dependencies>
</dependencies>
<dependencyManagement>
<dependencyManagement>
...
...
src/main/java/com/viettel/campaign/config/JobConfig.java
View file @
942114bc
...
@@ -7,6 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -7,6 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.TaskScheduler
;
import
org.springframework.scheduling.TaskScheduler
;
import
org.springframework.scheduling.Trigger
;
import
org.springframework.scheduling.TriggerContext
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.SchedulingConfigurer
;
import
org.springframework.scheduling.annotation.SchedulingConfigurer
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
;
...
@@ -26,9 +28,6 @@ import java.util.concurrent.ScheduledFuture;
...
@@ -26,9 +28,6 @@ import java.util.concurrent.ScheduledFuture;
@Configuration
@Configuration
public
class
JobConfig
implements
SchedulingConfigurer
{
public
class
JobConfig
implements
SchedulingConfigurer
{
@Autowired
private
ApParamService
apParamService
;
TaskScheduler
taskScheduler
;
TaskScheduler
taskScheduler
;
private
ScheduledFuture
<?>
job1
;
private
ScheduledFuture
<?>
job1
;
private
ScheduledFuture
<?>
job2
;
private
ScheduledFuture
<?>
job2
;
...
@@ -38,18 +37,18 @@ public class JobConfig implements SchedulingConfigurer {
...
@@ -38,18 +37,18 @@ public class JobConfig implements SchedulingConfigurer {
return
new
CampaignJob
();
return
new
CampaignJob
();
}
}
@Override
//
@Override
public
void
configureTasks
(
ScheduledTaskRegistrar
taskRegistrar
)
{
//
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
//
ThreadPoolTaskScheduler
threadPoolTaskScheduler
=
new
ThreadPoolTaskScheduler
();
//
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler
.
setPoolSize
(
10
);
//
threadPoolTaskScheduler.setPoolSize(10);
threadPoolTaskScheduler
.
setThreadNamePrefix
(
"scheduler-thread"
);
//
threadPoolTaskScheduler.setThreadNamePrefix("scheduler-thread");
threadPoolTaskScheduler
.
initialize
();
//
threadPoolTaskScheduler.initialize();
job1
(
threadPoolTaskScheduler
);
//
job1(threadPoolTaskScheduler);
job2
(
threadPoolTaskScheduler
);
//
job2(threadPoolTaskScheduler);
this
.
taskScheduler
=
threadPoolTaskScheduler
;
//
this.taskScheduler = threadPoolTaskScheduler;
taskRegistrar
.
setTaskScheduler
(
threadPoolTaskScheduler
);
//
taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
//
}
private
void
job1
(
TaskScheduler
scheduler
)
{
private
void
job1
(
TaskScheduler
scheduler
)
{
job1
=
scheduler
.
schedule
(()
->
{
job1
=
scheduler
.
schedule
(()
->
{
...
@@ -82,8 +81,17 @@ public class JobConfig implements SchedulingConfigurer {
...
@@ -82,8 +81,17 @@ public class JobConfig implements SchedulingConfigurer {
// @Override
@Override
// public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
public
void
configureTasks
(
ScheduledTaskRegistrar
scheduledTaskRegistrar
)
{
//// scheduledTaskRegistrar.addTriggerTask(() -> campaignJob().process2(), (TriggerContext triggerContext) -> yourService.getCron());
ThreadPoolTaskScheduler
threadPoolTaskScheduler
=
new
ThreadPoolTaskScheduler
();
// }
threadPoolTaskScheduler
.
setPoolSize
(
10
);
threadPoolTaskScheduler
.
setThreadNamePrefix
(
"scheduler-thread"
);
threadPoolTaskScheduler
.
initialize
();
scheduledTaskRegistrar
.
setTaskScheduler
(
threadPoolTaskScheduler
);
// scheduledTaskRegistrar.addTriggerTask(() -> campaignJob().process(), (TriggerContext triggerContext) -> yourService.getCron());
scheduledTaskRegistrar
.
addTriggerTask
(()
->
campaignJob
().
process
(),
triggerContext
->
{
CronTrigger
trigger
=
new
CronTrigger
(
"0/5 * * * * ?"
);
return
trigger
.
nextExecutionTime
(
triggerContext
);
});
}
}
}
src/main/java/com/viettel/campaign/repository/CampaignRepository.java
View file @
942114bc
...
@@ -8,9 +8,21 @@ import org.springframework.data.jpa.repository.Query;
...
@@ -8,9 +8,21 @@ import org.springframework.data.jpa.repository.Query;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
@Repository
@Repository
public
interface
CampaignRepository
extends
JpaRepository
<
Campaign
,
Long
>,
CampaignRepositoryCustom
{
public
interface
CampaignRepository
extends
JpaRepository
<
Campaign
,
Long
>,
CampaignRepositoryCustom
{
List
<
Campaign
>
findAllByCompanySiteId
(
Long
companyId
);
List
<
Campaign
>
findCampaignByCompanySiteIdAndStartTimeIsLessThanEqualAndStatusIn
(
Long
siteId
,
Date
startTime
,
List
<
Long
>
status
);
List
<
Campaign
>
findCampaignByCompanySiteIdAndEndTimeIsLessThanEqualAndStatusIn
(
Long
siteId
,
Date
endTime
,
List
<
Long
>
status
);
@Query
(
"SELECT COUNT(c.campaignId) "
+
@Query
(
"SELECT COUNT(c.campaignId) "
+
" FROM Campaign c JOIN CampaignCustomer cc ON c.campaignId = cc.campaignId "
+
" FROM Campaign c JOIN CampaignCustomer cc ON c.campaignId = cc.campaignId "
+
" WHERE cc.companySiteId = :pCompanySiteId "
+
" WHERE cc.companySiteId = :pCompanySiteId "
+
...
...
src/main/java/com/viettel/campaign/repository/ProcessConfigRepository.java
0 → 100644
View file @
942114bc
package
com.viettel.campaign.repository
;
import
com.viettel.campaign.model.ProcessConfig
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hanv_itsol
* @project campaign
*/
@Repository
public
interface
ProcessConfigRepository
extends
JpaRepository
<
ProcessConfig
,
Long
>
{
List
<
ProcessConfig
>
findAllByConfigCode
(
String
configCode
);
}
src/main/java/com/viettel/campaign/service/CampaignService.java
View file @
942114bc
...
@@ -4,6 +4,9 @@ import com.viettel.campaign.web.dto.CampaignDTO;
...
@@ -4,6 +4,9 @@ import com.viettel.campaign.web.dto.CampaignDTO;
import
com.viettel.campaign.web.dto.ResultDTO
;
import
com.viettel.campaign.web.dto.ResultDTO
;
import
com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO
;
import
com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
public
interface
CampaignService
{
public
interface
CampaignService
{
...
@@ -13,6 +16,14 @@ public interface CampaignService {
...
@@ -13,6 +16,14 @@ public interface CampaignService {
ResultDTO
findByCampaignCode
(
CampaignRequestDTO
requestDTO
);
ResultDTO
findByCampaignCode
(
CampaignRequestDTO
requestDTO
);
List
<
Campaign
>
findAllCondition
(
Long
companySiteId
);
List
<
Campaign
>
findCampaignByCompanySiteIdAndStartTimeIsLessThanEqualAndStatusIn
(
Long
siteId
,
Date
startTime
,
List
<
Long
>
status
);
List
<
Campaign
>
findCampaignByCompanySiteIdAndEndTimeIsLessThanEqualAndStatusIn
(
Long
siteId
,
Date
startTime
,
List
<
Long
>
status
);
Campaign
updateProcess
(
Campaign
c
);
ResultDTO
findByCampaignId
(
Long
campaignId
);
ResultDTO
findByCampaignId
(
Long
campaignId
);
ResultDTO
addNewCampaign
(
CampaignDTO
campaignDTO
);
ResultDTO
addNewCampaign
(
CampaignDTO
campaignDTO
);
...
...
src/main/java/com/viettel/campaign/service/ProcessConfigService.java
0 → 100644
View file @
942114bc
package
com.viettel.campaign.service
;
import
com.viettel.campaign.model.ProcessConfig
;
import
com.viettel.campaign.repository.ProcessConfigRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
/**
* @author hanv_itsol
* @project campaign
*/
@Service
@Transactional
public
class
ProcessConfigService
{
@Autowired
private
ProcessConfigRepository
processConfigRepository
;
@Transactional
(
readOnly
=
true
)
public
List
<
ProcessConfig
>
findAll
(){
return
processConfigRepository
.
findAll
();
}
@Transactional
(
readOnly
=
true
)
public
List
<
ProcessConfig
>
findAllByCode
(
String
configCode
){
return
processConfigRepository
.
findAllByConfigCode
(
configCode
);
}
public
void
update
(
ProcessConfig
pc
){
processConfigRepository
.
save
(
pc
);
}
}
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
View file @
942114bc
...
@@ -21,6 +21,11 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -21,6 +21,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.*
;
@Service
@Service
...
@@ -58,6 +63,26 @@ public class CampaignServiceImpl implements CampaignService {
...
@@ -58,6 +63,26 @@ public class CampaignServiceImpl implements CampaignService {
return
campaignRepository
.
findByCampaignCode
(
requestDTO
);
return
campaignRepository
.
findByCampaignCode
(
requestDTO
);
}
}
@Override
public
List
<
Campaign
>
findAllCondition
(
Long
companySiteId
)
{
return
campaignRepository
.
findAllByCompanySiteId
(
companySiteId
);
}
@Override
public
List
<
Campaign
>
findCampaignByCompanySiteIdAndStartTimeIsLessThanEqualAndStatusIn
(
Long
siteId
,
Date
startTime
,
List
<
Long
>
status
)
{
return
campaignRepository
.
findCampaignByCompanySiteIdAndStartTimeIsLessThanEqualAndStatusIn
(
siteId
,
startTime
,
status
);
}
@Override
public
List
<
Campaign
>
findCampaignByCompanySiteIdAndEndTimeIsLessThanEqualAndStatusIn
(
Long
siteId
,
Date
endTime
,
List
<
Long
>
status
)
{
return
campaignRepository
.
findCampaignByCompanySiteIdAndEndTimeIsLessThanEqualAndStatusIn
(
siteId
,
endTime
,
status
);
}
@Override
public
Campaign
updateProcess
(
Campaign
c
)
{
return
campaignRepository
.
save
(
c
);
}
@Override
@Override
public
ResultDTO
findByCampaignId
(
Long
campaignId
)
{
public
ResultDTO
findByCampaignId
(
Long
campaignId
)
{
ResultDTO
result
=
new
ResultDTO
();
ResultDTO
result
=
new
ResultDTO
();
...
...
src/main/java/com/viettel/campaign/utils/DateTimeUtil.java
View file @
942114bc
package
com.viettel.campaign.utils
;
package
com.viettel.campaign.utils
;
import
com.cronutils.model.definition.CronDefinition
;
import
com.cronutils.model.definition.CronDefinitionBuilder
;
import
com.cronutils.model.time.ExecutionTime
;
import
com.cronutils.parser.CronParser
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.logging.log4j.util.Strings
;
import
org.apache.logging.log4j.util.Strings
;
import
org.joda.time.DateTime
;
import
org.joda.time.format.DateTimeFormat
;
import
org.joda.time.format.DateTimeFormat
;
import
org.quartz.CronExpression
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.Duration
;
import
java.time.ZonedDateTime
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.Optional
;
import
java.util.TimeZone
;
import
java.util.TimeZone
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.concurrent.atomic.AtomicReference
;
import
static
com
.
cronutils
.
model
.
CronType
.
QUARTZ
;
import
static
java
.
util
.
concurrent
.
TimeUnit
.
MILLISECONDS
;
import
static
java
.
util
.
concurrent
.
TimeUnit
.
MILLISECONDS
;
import
static
java
.
util
.
concurrent
.
TimeUnit
.
NANOSECONDS
;
import
static
java
.
util
.
concurrent
.
TimeUnit
.
NANOSECONDS
;
/**
/**
* @author anhvd_itsol
* @author anhvd_itsol
*/
*/
@Slf4j
public
final
class
DateTimeUtil
{
public
final
class
DateTimeUtil
{
public
static
final
long
DAY_IN_MILLIS
=
86400000L
;
public
static
final
long
DAY_IN_MILLIS
=
86400000L
;
public
static
interface
DateTimeProvider
{
long
now
();
}
public
static
interface
DateTimeProvider
{
long
now
();
}
...
@@ -84,4 +98,26 @@ public final class DateTimeUtil {
...
@@ -84,4 +98,26 @@ public final class DateTimeUtil {
/**
/**
*
*
*/
*/
public
static
boolean
isRun
(
String
cron
,
Date
lastCheck
){
boolean
isOk
=
false
;
String
format
=
"dd-MMM-YYYY hh:mm:ss"
;
// String cronExpression="* * 12 ? * FRI *";
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
format
);
CronExpression
expression
=
null
;
try
{
expression
=
new
CronExpression
(
cron
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
Date
currentDate
=
new
Date
();
assert
expression
!=
null
;
Date
lastDate
=
expression
.
getNextValidTimeAfter
(
lastCheck
);
long
interval
=
lastDate
.
getTime
()
-
currentDate
.
getTime
();
if
(
interval
<=
0
){
isOk
=
true
;
}
return
isOk
;
}
}
}
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