Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gogirl-miniapp-backend
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huluobin
gogirl-miniapp-backend
Commits
d5c08a01
Commit
d5c08a01
authored
Apr 03, 2020
by
huluobin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
eec6714e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
42 deletions
+44
-42
ScheduleManageService.java
...gogirl/application/order/serve/ScheduleManageService.java
+2
-1
ScheduleManageServiceImpl.java
...plication/order/serve/impl/ScheduleManageServiceImpl.java
+42
-41
No files found.
src/main/java/com/gogirl/application/order/serve/ScheduleManageService.java
View file @
d5c08a01
...
...
@@ -20,6 +20,7 @@ import java.text.ParseException;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ExecutionException
;
/**
* 预约service
...
...
@@ -34,7 +35,7 @@ public interface ScheduleManageService extends IService<ScheduleManage> {
* @return list
* @throws ParseException exception
*/
List
<
IdleTimeDTO
>
queryIdleTime
(
IdleTimeProgramQuery
param
)
throws
ParseException
;
List
<
IdleTimeDTO
>
queryIdleTime
(
IdleTimeProgramQuery
param
)
throws
ParseException
,
ExecutionException
,
InterruptedException
;
/**
* 闲时入口查询预约时间
...
...
src/main/java/com/gogirl/application/order/serve/impl/ScheduleManageServiceImpl.java
View file @
d5c08a01
...
...
@@ -63,6 +63,9 @@ import java.text.SimpleDateFormat;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.*
;
import
java.util.concurrent.CopyOnWriteArrayList
;
import
java.util.concurrent.ExecutionException
;
import
java.util.concurrent.ForkJoinPool
;
import
java.util.concurrent.atomic.AtomicLong
;
import
java.util.stream.Collectors
;
...
...
@@ -228,7 +231,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
@Override
public
List
<
IdleTimeDTO
>
queryIdleTime
(
IdleTimeProgramQuery
qry
)
throws
ParseException
{
public
List
<
IdleTimeDTO
>
queryIdleTime
(
IdleTimeProgramQuery
qry
)
throws
ParseException
,
ExecutionException
,
InterruptedException
{
IdleTimeQuery
idleTimeQuery
=
new
IdleTimeQuery
();
...
...
@@ -297,55 +300,55 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
});
});
//
List
<
IdleTimeDTO
>
idleTimeDTOList
=
idleTimeQuery
.
getDateTimeList
()
.
stream
()
//并行处理
.
parallel
()
.
map
(
dateTime
->
{
ForkJoinPool
myPool
=
new
ForkJoinPool
(
dateTimeList
.
size
());
List
<
IdleTimeDTO
>
idleTimeDTOList
=
new
CopyOnWriteArrayList
();
AtomicLong
time
=
new
AtomicLong
(
System
.
currentTimeMillis
());
myPool
.
submit
(()
->
{
idleTimeQuery
.
getDateTimeList
()
.
forEach
(
dateTime
->
{
//每个主服务由不同的美甲师做,setter主服务的时间period
mainServeDTOList
.
forEach
(
mainServeDTO
->
{
Period
period
=
new
Period
();
period
.
setStartTime
(
dateTime
);
period
.
setLength
(
mainServeDTO
.
getLengthTimeForEndTime
().
longValue
()
*
60000
);
period
.
setEndTime
(
dateTime
+
period
.
getLength
());
mainServeDTO
.
setPeriod
(
period
);
});
AtomicLong
time
=
new
AtomicLong
(
System
.
currentTimeMillis
());
//主服务深度克隆
List
<
ScheduleServeQuery
>
cloneMainServeDTOList
=
mainServeDTOList
.
stream
().
map
(
CloneUtil:
:
deepClone
).
collect
(
Collectors
.
toList
());
//每个主服务由不同的美甲师做,setter主服务的时间period
mainServeDTOList
.
forEach
(
mainServeDTO
->
{
Period
period
=
new
Period
();
period
.
setStartTime
(
dateTime
);
period
.
setLength
(
mainServeDTO
.
getLengthTimeForEndTime
().
longValue
()
*
60000
);
period
.
setEndTime
(
dateTime
+
period
.
getLength
());
mainServeDTO
.
setPeriod
(
period
);
});
//美甲师
深度克隆
List
<
StoreTechnicianPeriod
>
cloneStoreTechnicianDTOList
=
idleTimeQuery
.
getStoreTechnicianDTOList
()
.
stream
().
map
(
CloneUtil:
:
deepClone
).
collect
(
Collectors
.
toList
());
//主服务
深度克隆
List
<
ScheduleServeQuery
>
cloneMainServeDTOList
=
mainServeDTOList
.
stream
().
map
(
CloneUtil:
:
deepClone
).
collect
(
Collectors
.
toList
());
//构造预约方案树🌲
TreeProgram
treeProgram
=
this
.
rec
(
new
LinkedList
<>(
cloneMainServeDTOList
),
cloneStoreTechnicianDTOList
,
TreeProgram
.
roo
t
());
//美甲师深度克隆
List
<
StoreTechnicianPeriod
>
cloneStoreTechnicianDTOList
=
idleTimeQuery
.
getStoreTechnicianDTOList
().
stream
().
map
(
CloneUtil:
:
deepClone
).
collect
(
Collectors
.
toLis
t
());
log
.
debug
(
"spendTime:{}"
,
System
.
currentTimeMillis
()
-
time
.
get
());
time
.
set
(
System
.
currentTimeMillis
());
//构造预约方案树🌲
TreeProgram
treeProgram
=
this
.
rec
(
new
LinkedList
<>(
cloneMainServeDTOList
),
cloneStoreTechnicianDTOList
,
TreeProgram
.
root
());
List
<
TreeProgram
>
defaultNodes
=
new
ArrayList
<>();
log
.
debug
(
"spendTime:{}"
,
System
.
currentTimeMillis
()
-
time
.
get
());
time
.
set
(
System
.
currentTimeMillis
());
//构造默认美甲师
this
.
recDefault
(
defaultNodes
,
treeProgram
);
log
.
debug
(
"构造默认美甲师Time:{}"
,
System
.
currentTimeMillis
()
-
time
.
get
());
time
.
set
(
System
.
currentTimeMillis
());
List
<
TreeProgram
>
defaultNodes
=
new
ArrayList
<>();
IdleTimeDTO
idleTimeDTO
=
new
IdleTimeDTO
();
idleTimeDTO
.
setDateTime
(
dateTime
);
idleTimeDTO
.
setTime
(
new
SimpleDateFormat
(
"HH:mm"
).
format
(
new
Date
(
dateTime
)));
idleTimeDTO
.
setStatus
(!
treeProgram
.
childNull
());
idleTimeDTO
.
setTreeProgram
(
treeProgram
);
idleTimeDTO
.
setDefaultNodeList
(
defaultNodes
);
return
idleTimeDTO
;
//构造默认美甲师
this
.
recDefault
(
defaultNodes
,
treeProgram
);
time
.
set
(
System
.
currentTimeMillis
());
IdleTimeDTO
idleTimeDTO
=
new
IdleTimeDTO
();
idleTimeDTO
.
setDateTime
(
dateTime
);
idleTimeDTO
.
setTime
(
new
SimpleDateFormat
(
"HH:mm"
).
format
(
new
Date
(
dateTime
)));
idleTimeDTO
.
setStatus
(!
treeProgram
.
childNull
());
idleTimeDTO
.
setTreeProgram
(
treeProgram
);
idleTimeDTO
.
setDefaultNodeList
(
defaultNodes
);
idleTimeDTOList
.
add
(
idleTimeDTO
);
});
});
})
.
collect
(
Collectors
.
toList
());
return
idleTimeDTOList
;
return
idleTimeDTOList
.
stream
().
sorted
(
Comparator
.
comparing
(
IdleTimeDTO:
:
getTime
)).
collect
(
Collectors
.
toList
())
;
}
private
void
recDefault
(
List
<
TreeProgram
>
list
,
...
...
@@ -408,7 +411,6 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
List
<
Integer
>
technicianIds
=
treeProgramList
.
stream
().
map
(
StoreTechnicianPeriod:
:
getTechnicianId
).
collect
(
Collectors
.
toList
());
Integer
technicianId
=
storeTechnician
.
getTechnicianId
();
log
.
debug
(
"technicianIds:{},technicianId:{}"
,
technicianIds
,
technicianId
);
boolean
b
=
technicianIds
.
contains
(
technicianId
);
//如果已经设置该美甲师的节点不为空 需要把当前节点的服务时间加上
...
...
@@ -451,7 +453,6 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
});
parent
.
setChildList
(
childList
);
log
.
info
(
"构造子树时间:{} ,父亲节点:{}"
,
System
.
currentTimeMillis
()
-
time
,
parent
.
getStoreTechnicianDTO
());
return
parent
;
}
...
...
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