Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
yangxiujun
/
paidan_demo
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit f79879b9
authored
Aug 03, 2023
by
wangli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
1 parent
5409e6e1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
46 deletions
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerTimelineServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerTimelineServiceImpl.java
View file @
f79879b
...
...
@@ -11,6 +11,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.persistence.EntityManager
;
import
javax.persistence.TypedQuery
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
java.time.LocalDate
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -21,19 +27,19 @@ import java.util.stream.Stream;
public
class
EngineerTimelineServiceImpl
implements
EngineerTimelineService
{
@Autowired
private
OrderInfo
MPDao
orderInfoMP
Dao
;
private
OrderInfo
Dao
orderInfo
Dao
;
@Autowired
private
EngineerInfo
MPDao
engineerInfoMP
Dao
;
private
EngineerInfo
Dao
engineerInfo
Dao
;
@Autowired
private
WarehouseInfo
MPDao
warehouseInfoMP
Dao
;
private
WarehouseInfo
Dao
warehouseInfo
Dao
;
@Autowired
private
OrgGroup
MPDao
orgGroupMP
Dao
;
private
OrgGroup
Dao
orgGroup
Dao
;
@Autowired
private
OrderEventMPDao
orderEventMPDao
;
private
EntityManager
entityManager
;
@Transactional
@Override
...
...
@@ -42,14 +48,14 @@ public class EngineerTimelineServiceImpl implements EngineerTimelineService {
LocalDate
localDate
=
TimeUtils
.
IsoDate2LocalDate
(
date
);
// 工程師信息
EngineerInfo
engineerInfo
=
engineerInfoMP
Dao
.
getByEngineerCode
(
engineerCode
);
EngineerInfo
Entity
engineerInfo
=
engineerInfo
Dao
.
getByEngineerCode
(
engineerCode
);
// 获取工程师date日的订单数据
List
<
OrderInfo
>
orders
=
this
.
selectEngineerOrders
(
engineerCode
,
localDate
);
List
<
OrderInfo
Entity
>
orders
=
this
.
selectEngineerOrders
(
engineerCode
,
localDate
);
// 获取工程师已完成的timeline数据
List
<
String
>
orderIds
=
orders
.
stream
().
map
(
OrderInfo:
:
getOrderId
).
collect
(
Collectors
.
toList
());
List
<
OrderEvent
>
timelines
=
this
.
engineerTimelines
(
orderIds
,
date
);
List
<
String
>
orderIds
=
orders
.
stream
().
map
(
OrderInfo
Entity
:
:
getOrderId
).
collect
(
Collectors
.
toList
());
List
<
OrderEvent
Entity
>
timelines
=
this
.
engineerTimelines
(
orderIds
,
date
);
// 获取客户地址
HashMap
<
String
,
String
>
orderLocations
=
this
.
orderRequestsLocation
(
orders
);
...
...
@@ -67,30 +73,39 @@ public class EngineerTimelineServiceImpl implements EngineerTimelineService {
return
Result
.
success
(
res
);
}
private
List
<
OrderInfo
>
selectEngineerOrders
(
String
engineerCode
,
LocalDate
dt
){
LambdaQueryWrapper
<
OrderInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
lqw
.
eq
(
OrderInfo:
:
getDt
,
dt
);
lqw
.
eq
(
OrderInfo:
:
getEngineerCode
,
engineerCode
);
lqw
.
ne
(
OrderInfo:
:
getAppointmentStatus
,
"INIT"
);
lqw
.
ne
(
OrderInfo:
:
getOrderStatus
,
"CANCEL"
);
return
orderInfoMPDao
.
selectList
(
lqw
);
private
List
<
OrderInfoEntity
>
selectEngineerOrders
(
String
engineerCode
,
LocalDate
dt
){
List
<
OrderInfoEntity
>
orders
=
orderInfoDao
.
findByEngineerCodeAndDtAndAppointmentStatusIn
(
engineerCode
,
dt
,
List
.
of
(
"PRE"
,
"CONFIRM"
));
return
orders
.
stream
().
filter
(
o
->
!
o
.
getOrderStatus
().
equals
(
"CANCEL"
)).
collect
(
Collectors
.
toList
());
}
private
List
<
OrderEvent
>
engineerTimelines
(
List
<
String
>
orderIds
,
String
date
){
// 获取工程师timeline
List
<
String
>
events
=
Stream
.
of
(
"分站取还配件"
,
"已出发"
,
"加单"
).
collect
(
Collectors
.
toList
());
LambdaQueryWrapper
<
OrderEvent
>
lqw
=
new
LambdaQueryWrapper
<>();
lqw
.
in
(
OrderEvent:
:
getOrderId
,
orderIds
);
lqw
.
ge
(
OrderEvent:
:
getHappen
,
date
+
" 00:00:00"
);
lqw
.
le
(
OrderEvent:
:
getHappen
,
date
+
" 23:59:59"
);
lqw
.
in
(
OrderEvent:
:
getEvent
,
events
);
return
orderEventMPDao
.
selectList
(
lqw
);
public
List
<
OrderEventEntity
>
engineerTimelines
(
List
<
String
>
orderIds
,
String
date
)
{
List
<
String
>
events
=
Arrays
.
asList
(
"分站取还配件"
,
"已出发"
,
"加单"
);
CriteriaBuilder
criteriaBuilder
=
entityManager
.
getCriteriaBuilder
();
CriteriaQuery
<
OrderEventEntity
>
criteriaQuery
=
criteriaBuilder
.
createQuery
(
OrderEventEntity
.
class
);
Root
<
OrderEvent
>
root
=
criteriaQuery
.
from
(
OrderEvent
.
class
);
List
<
Predicate
>
predicates
=
new
ArrayList
<>();
predicates
.
add
(
root
.
get
(
"orderId"
).
in
(
orderIds
));
predicates
.
add
(
criteriaBuilder
.
greaterThanOrEqualTo
(
root
.
get
(
"happen"
),
date
+
" 00:00:00"
));
predicates
.
add
(
criteriaBuilder
.
lessThanOrEqualTo
(
root
.
get
(
"happen"
),
date
+
" 23:59:59"
));
predicates
.
add
(
root
.
get
(
"event"
).
in
(
events
));
criteriaQuery
.
where
(
predicates
.
toArray
(
new
Predicate
[
0
]));
TypedQuery
<
OrderEventEntity
>
typedQuery
=
entityManager
.
createQuery
(
criteriaQuery
);
List
<
OrderEventEntity
>
result
=
typedQuery
.
getResultList
();
return
result
;
}
private
HashMap
<
String
,
String
>
orderRequestsLocation
(
List
<
OrderInfo
>
orders
)
{
private
HashMap
<
String
,
String
>
orderRequestsLocation
(
List
<
OrderInfoEntity
>
orders
)
{
// 获取客户地址location
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
for
(
OrderInfo
o:
orders
){
for
(
OrderInfo
Entity
o:
orders
){
map
.
put
(
o
.
getOrderId
(),
String
.
format
(
"%s,%s"
,
o
.
getX
(),
o
.
getY
()));
}
return
map
;
...
...
@@ -98,38 +113,30 @@ public class EngineerTimelineServiceImpl implements EngineerTimelineService {
private
String
getWarehouseLocation
(
String
branchId
)
{
// 获取配送站location
LambdaQueryWrapper
<
OrgWarehouseInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
lqw
.
eq
(
OrgWarehouseInfo:
:
getBranchId
,
branchId
);
List
<
OrgWarehouseInfo
>
wares
=
warehouseInfoMPDao
.
selectList
(
lqw
);
OrgWarehouseInfo
w
=
wares
.
get
(
0
);
List
<
OrgWarehouseInfoEntity
>
wares
=
warehouseInfoDao
.
findByBranchId
(
branchId
);
OrgWarehouseInfoEntity
w
=
wares
.
get
(
0
);
return
String
.
format
(
"%s,%s"
,
w
.
getX
(),
w
.
getY
());
}
private
String
getEngineerBranchId
(
String
engineerCode
)
{
LambdaQueryWrapper
<
EngineerInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
lqw
.
select
(
EngineerInfo:
:
getGroupId
);
lqw
.
eq
(
EngineerInfo:
:
getEngineerCode
,
engineerCode
);
EngineerInfo
e
=
engineerInfoMPDao
.
selectOne
(
lqw
);
EngineerInfoEntity
e
=
engineerInfoDao
.
getByEngineerCode
(
engineerCode
);
if
(
e
==
null
)
{
return
""
;
}
LambdaQueryWrapper
<
OrgGroup
>
lqw2
=
new
LambdaQueryWrapper
<>();
lqw2
.
select
(
OrgGroup:
:
getBranchId
);
lqw2
.
eq
(
OrgGroup:
:
getGroupId
,
e
.
getGroupId
());
OrgGroup
g
=
orgGroupMPDao
.
selectOne
(
lqw2
);
OrgGroupEntity
g
=
orgGroupDao
.
getByGroupId
(
e
.
getGroupId
());
return
(
g
==
null
)?
""
:
g
.
getBranchId
();
}
private
List
<
EngineerTimelineResp
.
DynamicItem
>
packItems
(
List
<
OrderEvent
>
timelines
,
List
<
OrderInfo
>
orders
,
HashMap
<
String
,
String
>
locations
,
String
warehouseLocation
)
{
private
List
<
EngineerTimelineResp
.
DynamicItem
>
packItems
(
List
<
OrderEventEntity
>
timelines
,
List
<
OrderInfoEntity
>
orders
,
HashMap
<
String
,
String
>
locations
,
String
warehouseLocation
)
{
int
index
=
0
;
String
order_id
,
title
,
type
,
text
,
location
;
List
<
EngineerTimelineResp
.
DynamicItem
>
items
=
new
ArrayList
<>();
Set
<
String
>
s
=
new
HashSet
<>();
for
(
OrderEvent
t:
timelines
){
for
(
OrderEvent
Entity
t:
timelines
){
EngineerTimelineResp
.
DynamicItem
item
=
new
EngineerTimelineResp
.
DynamicItem
();
if
(
t
.
getEvent
().
equals
(
"分站取还配件"
))
{
...
...
@@ -146,7 +153,7 @@ public class EngineerTimelineServiceImpl implements EngineerTimelineService {
continue
;
}
item
.
setTitle
(
title
);
item
.
setTime
(
TimeUtils
.
Iso
Timestamp2DateTime
(
t
.
getHappen
()));
item
.
setTime
(
TimeUtils
.
Iso
LocalDateTime2String
(
t
.
getHappen
()));
item
.
setStatus
(
1
);
item
.
setText
(
text
);
...
...
@@ -157,8 +164,8 @@ public class EngineerTimelineServiceImpl implements EngineerTimelineService {
s
.
add
(
t
.
getOrderId
()
+
t
.
getSuborderId
());
}
List
<
OrderInfo
>
records
=
orders
.
stream
().
sorted
(
Comparator
.
comparing
(
OrderInfo
:
:
getPlanStartTime
)).
collect
(
Collectors
.
toList
());
for
(
OrderInfo
o:
records
){
List
<
OrderInfo
Entity
>
records
=
orders
.
stream
().
sorted
(
Comparator
.
comparing
(
OrderInfoEntity
:
:
getPlanStartTime
)).
collect
(
Collectors
.
toList
());
for
(
OrderInfo
Entity
o:
records
){
order_id
=
o
.
getOrderId
()
+
o
.
getSubId
();
if
(
s
.
contains
(
order_id
))
{
continue
;
...
...
@@ -166,7 +173,7 @@ public class EngineerTimelineServiceImpl implements EngineerTimelineService {
index
+=
1
;
EngineerTimelineResp
.
DynamicItem
item
=
new
EngineerTimelineResp
.
DynamicItem
();
item
.
setTitle
(
String
.
format
(
"第%d单出发"
,
index
));
item
.
setTime
(
TimeUtils
.
Iso
Timestamp2DateTime
(
o
.
getPlanStartTime
()));
item
.
setTime
(
TimeUtils
.
Iso
LocalDateTime2String
(
o
.
getPlanStartTime
()));
item
.
setStatus
(
0
);
item
.
setText
(
String
.
format
(
"%d"
,
index
));
item
.
setLocation
(
locations
.
get
(
o
.
getOrderId
()));
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment