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 04cc1926
authored
Nov 09, 2023
by
huangjinxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:派工台指定工程师计划时间问题处理
1 parent
a1213087
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
61 additions
and
30 deletions
project-interface/src/main/java/com/dituhui/pea/enums/StatusCodeEnum.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/DispatchServiceImpl.java
project-interface/src/main/java/com/dituhui/pea/enums/StatusCodeEnum.java
View file @
04cc192
...
...
@@ -140,7 +140,10 @@ public enum StatusCodeEnum {
ORDER_SKILL_NOT_EXISTS
(
"027"
,
"订单所需技能不存在,请核对!"
,
false
),
ORDER_RESCHEDULE_BEFORE_TIME
(
"028"
,
"订单不能改约到当前时间以前!"
,
false
);
ORDER_RESCHEDULE_BEFORE_TIME
(
"028"
,
"订单不能改约到当前时间以前!"
,
false
),
TEAM_UNMATCHED
(
"029"
,
"工程师没有匹配到工作队"
,
false
),
;
/**
* 状态码
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/DispatchServiceImpl.java
View file @
04cc192
...
...
@@ -2,6 +2,7 @@ package com.dituhui.pea.order.service.impl;
import
com.dituhui.pea.common.BusinessException
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.enums.StatusCodeEnum
;
import
com.dituhui.pea.order.common.ListUtils
;
import
com.dituhui.pea.order.common.TimeUtils
;
import
com.dituhui.pea.order.dao.*
;
...
...
@@ -10,10 +11,12 @@ import com.dituhui.pea.order.dto.DispatchEngineerOrderListResp;
import
com.dituhui.pea.order.dto.DispatchOrderListReq
;
import
com.dituhui.pea.order.dto.DispatchOrderListResp
;
import
com.dituhui.pea.order.entity.*
;
import
com.dituhui.pea.order.enums.AppointmentMethodEnum
;
import
com.dituhui.pea.order.enums.OrderFlowEnum
;
import
com.dituhui.pea.order.enums.OrderGroupEnum
;
import
com.dituhui.pea.order.enums.OrderStatusEnum
;
import
com.dituhui.pea.order.service.DispatchService
;
import
com.dituhui.pea.order.utils.CommonUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -61,6 +64,9 @@ public class DispatchServiceImpl implements DispatchService {
@Autowired
private
OrgGroupDao
orgGroupDao
;
@Autowired
private
OrgTeamEngineerDao
orgTeamEngineerDao
;
@Transactional
@Override
public
Result
<?>
getDispatchOrderList
(
DispatchOrderListReq
reqDTO
)
{
...
...
@@ -279,35 +285,57 @@ public class DispatchServiceImpl implements DispatchService {
throw
new
BusinessException
(
"订单不存在"
);
}
// 已经指派的订单
List
<
OrderInfoEntity
>
engineerOrders
=
orderInfoDao
.
findByDtAndEngineerCode
(
localDate
,
engineerCode
);
engineerOrders
.
sort
(
Comparator
.
comparing
(
OrderInfoEntity:
:
getPlanStartTime
));
// 按照planStartTime排序
List
<
OrderInfoEntity
>
orderAppointments
=
engineerOrders
.
stream
()
.
filter
(
o
->
o
.
getOrderStatus
().
equals
(
"NORMAL"
))
.
collect
(
Collectors
.
toList
());
// 过滤,只有NORMAL订单才需要处理,取消订单不需要处理
// TODO,临时处理方案,后续调用派单引擎处理
OrderRequestScheduler
scheduler
=
new
OrderRequestScheduler
();
List
<
LineSegment
>
results
=
scheduler
.
scheduler
(
orders
,
orderAppointments
);
for
(
LineSegment
r
:
results
)
{
String
orderId
=
r
.
id
;
LocalDateTime
planStartTime
=
scheduler
.
linePoint2DateTime
(
r
.
start
,
date
);
LocalDateTime
planEndTime
=
scheduler
.
linePoint2DateTime
(
r
.
end
,
date
);
CriteriaBuilder
criteriaBuilder
=
entityManager
.
getCriteriaBuilder
();
CriteriaUpdate
<
OrderInfoEntity
>
update
=
criteriaBuilder
.
createCriteriaUpdate
(
OrderInfoEntity
.
class
);
Root
<
OrderInfoEntity
>
root
=
update
.
from
(
OrderInfoEntity
.
class
);
update
.
set
(
root
.
get
(
"planStartTime"
),
planStartTime
);
update
.
set
(
root
.
get
(
"planEndTime"
),
planEndTime
);
update
.
set
(
root
.
get
(
"appointmentStatus"
),
OrderFlowEnum
.
CONFIRM
.
name
());
update
.
set
(
root
.
get
(
"appointmentMethod"
),
"MANUAL"
);
update
.
set
(
root
.
get
(
"engineerCode"
),
engineerCode
);
update
.
where
(
criteriaBuilder
.
equal
(
root
.
get
(
"orderId"
),
orderId
),
criteriaBuilder
.
equal
(
root
.
get
(
"dt"
),
localDate
)
);
entityManager
.
createQuery
(
update
).
executeUpdate
();
}
List
<
OrgTeamEngineerEntity
>
orgTeamEngineers
=
orgTeamEngineerDao
.
findByEngineerCode
(
engineer
.
getEngineerCode
());
if
(
CollectionUtils
.
isEmpty
(
orgTeamEngineers
))
{
return
Result
.
failed
(
StatusCodeEnum
.
TEAM_UNMATCHED
);
}
OrgTeamEntity
byTeamId
=
orgTeamDao
.
getByTeamId
(
orgTeamEngineers
.
get
(
0
).
getTeamId
());
for
(
OrderInfoEntity
entity
:
orders
)
{
SkillInfoEntity
skill
=
skillInfoDao
.
getByBrandAndTypeAndSkill
(
CommonUtil
.
fixBrand
(
entity
.
getBrand
()),
entity
.
getType
(),
entity
.
getSkill
());
entity
.
setTakeTime
(
skill
.
getTakeTime
());
entity
.
setPlanStartTime
(
entity
.
getExpectTimeBegin
());
entity
.
setPlanEndTime
(
entity
.
getExpectTimeBegin
().
plusMinutes
(
skill
.
getTakeTime
()));
entity
.
setEngineerCode
(
engineer
.
getEngineerCode
());
entity
.
setEngineerName
(
engineer
.
getName
());
entity
.
setEngineerPhone
(
engineer
.
getPhone
());
entity
.
setAppointmentStatus
(
OrderFlowEnum
.
CONFIRM
.
name
());
entity
.
setAppointmentMethod
(
AppointmentMethodEnum
.
MANUAL
.
name
());
entity
.
setOrgTeamId
(
byTeamId
.
getTeamId
());
entity
.
setOrgBranchId
(
byTeamId
.
getBranchId
());
entity
.
setOrgClusterId
(
byTeamId
.
getClusterId
());
orderInfoDao
.
save
(
entity
);
}
//
// // 已经指派的订单
// List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(localDate, engineerCode);
// engineerOrders.sort(Comparator.comparing(OrderInfoEntity::getPlanStartTime)); // 按照planStartTime排序
// List<OrderInfoEntity> orderAppointments = engineerOrders.stream()
// .filter(o -> o.getOrderStatus().equals("NORMAL"))
// .collect(Collectors.toList()); // 过滤,只有NORMAL订单才需要处理,取消订单不需要处理
//
// // TODO,临时处理方案,后续调用派单引擎处理
// OrderRequestScheduler scheduler = new OrderRequestScheduler();
// List<LineSegment> results = scheduler.scheduler(orders, orderAppointments);
// for (LineSegment r : results) {
// String orderId = r.id;
// LocalDateTime planStartTime = scheduler.linePoint2DateTime(r.start, date);
// LocalDateTime planEndTime = scheduler.linePoint2DateTime(r.end, date);
//
// CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
// CriteriaUpdate<OrderInfoEntity> update = criteriaBuilder.createCriteriaUpdate(OrderInfoEntity.class);
// Root<OrderInfoEntity> root = update.from(OrderInfoEntity.class);
// update.set(root.get("planStartTime"), planStartTime);
// update.set(root.get("planEndTime"), planEndTime);
// update.set(root.get("appointmentStatus"), OrderFlowEnum.CONFIRM.name());
// update.set(root.get("appointmentMethod"), "MANUAL");
// update.set(root.get("engineerCode"), engineerCode);
// update.where(
// criteriaBuilder.equal(root.get("orderId"), orderId),
// criteriaBuilder.equal(root.get("dt"), localDate)
// );
// entityManager.createQuery(update).executeUpdate();
// }
return
Result
.
success
(
null
);
}
...
...
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