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 cf594427
authored
Nov 10, 2023
by
huangjinxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:改约添加标签,改约原因,批量改约
1 parent
acca7d28
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
96 additions
and
40 deletions
project-order/src/main/java/com/dituhui/pea/order/controller/OrderAssignController.java
project-order/src/main/java/com/dituhui/pea/order/dto/OrderReschedule.java
project-order/src/main/java/com/dituhui/pea/order/dto/param/OrderDTO.java
project-order/src/main/java/com/dituhui/pea/order/service/OrderInfoService.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/DispatchServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/OrderAssignImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/OrderCreateServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/OrderInfoServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/controller/OrderAssignController.java
View file @
cf59442
...
...
@@ -13,7 +13,9 @@ import org.springframework.web.bind.annotation.*;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@RestController
@RequestMapping
(
"/pea-order"
)
...
...
@@ -54,13 +56,15 @@ public class OrderAssignController {
@PostMapping
(
"/order/assign/list"
)
public
Result
<?>
orderAssign
(
@RequestBody
List
<
OrderAssignReq
>
assignReqList
)
{
Map
<
String
,
Result
>
resultMap
=
new
HashMap
<>();
for
(
OrderAssignReq
assignReq
:
assignReqList
)
{
// 服务单指派-指派提交
try
{
for
(
OrderAssignReq
assignReq
:
assignReqList
)
{
orderAssign
.
orderAssign
(
assignReq
);
}
Result
result
=
orderAssign
.
orderAssign
(
assignReq
);
resultMap
.
put
(
assignReq
.
getOrderId
(),
result
);
}
catch
(
BusinessException
e
)
{
return
Result
.
failed
(
e
.
getMessage
());
resultMap
.
put
(
assignReq
.
getOrderId
(),
Result
.
failed
(
e
.
getMessage
()));
}
}
return
Result
.
success
();
}
...
...
@@ -89,6 +93,19 @@ public class OrderAssignController {
return
res
;
}
@GetMapping
(
"/order/rescheduling/reason"
)
public
Result
<?>
orderReschedulingReason
()
{
// 订单改约原因
Result
<?>
res
=
null
;
try
{
res
=
orderInfoService
.
orderReschedulingReason
();
}
catch
(
BusinessException
e
)
{
return
Result
.
failed
(
e
.
getMessage
());
}
return
res
;
}
/**
* 批量改约
*
...
...
@@ -97,14 +114,16 @@ public class OrderAssignController {
*/
@PostMapping
(
"/order/rescheduling/list"
)
public
Result
<?>
orderRescheduling
(
@RequestBody
List
<
OrderReschedule
>
rescheduleList
)
{
Map
<
String
,
Result
>
resultMap
=
new
HashMap
<>();
for
(
OrderReschedule
reschedule
:
rescheduleList
)
{
// 订单改约
try
{
for
(
OrderReschedule
reschedule
:
rescheduleList
)
{
orderInfoService
.
orderReschedule
(
reschedule
);
}
Result
result
=
orderInfoService
.
orderReschedule
(
reschedule
);
resultMap
.
put
(
reschedule
.
getOrderId
(),
result
);
}
catch
(
BusinessException
e
)
{
return
Result
.
failed
(
e
.
getMessage
(
));
resultMap
.
put
(
reschedule
.
getOrderId
(),
Result
.
failed
(
e
.
getMessage
()
));
}
return
Result
.
success
();
}
return
Result
.
success
(
resultMap
);
}
}
project-order/src/main/java/com/dituhui/pea/order/dto/OrderReschedule.java
View file @
cf59442
...
...
@@ -4,6 +4,7 @@ import com.dituhui.pea.order.dto.param.Location;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
@Data
public
class
OrderReschedule
{
...
...
@@ -47,5 +48,8 @@ public class OrderReschedule {
*/
private
String
reschedulingReason
;
/**
* 标签
*/
private
List
<
String
>
orderTags
;
}
project-order/src/main/java/com/dituhui/pea/order/dto/param/OrderDTO.java
View file @
cf59442
...
...
@@ -219,6 +219,7 @@ public class OrderDTO {
*/
private
String
reschedulingReason
;
private
List
<
String
>
orderTags
;
}
/**
...
...
project-order/src/main/java/com/dituhui/pea/order/service/OrderInfoService.java
View file @
cf59442
...
...
@@ -44,4 +44,11 @@ public interface OrderInfoService {
* @return
*/
Result
<?>
orderReschedule
(
OrderReschedule
req
);
/**
* 改约原因
*
* @return
*/
Result
<?>
orderReschedulingReason
();
}
project-order/src/main/java/com/dituhui/pea/order/service/impl/DispatchServiceImpl.java
View file @
cf59442
...
...
@@ -278,11 +278,11 @@ public class DispatchServiceImpl implements DispatchService {
EngineerInfoEntity
engineer
=
engineerInfoDao
.
getByEngineerCode
(
engineerCode
);
if
(
engineer
==
null
)
{
throw
new
BusinessException
(
"技术员不存在"
);
return
Result
.
failed
(
"技术员不存在"
);
}
List
<
OrderInfoEntity
>
orders
=
orderInfoDao
.
findAllByDtAndOrderIdIn
(
localDate
,
orderIds
);
if
(
ListUtils
.
isEmpty
(
orders
))
{
throw
new
BusinessException
(
"订单不存在"
);
return
Result
.
failed
(
"订单不存在"
);
}
List
<
OrgTeamEngineerEntity
>
orgTeamEngineers
=
orgTeamEngineerDao
.
findByEngineerCode
(
engineer
.
getEngineerCode
());
...
...
@@ -292,6 +292,9 @@ public class DispatchServiceImpl implements DispatchService {
OrgTeamEntity
byTeamId
=
orgTeamDao
.
getByTeamId
(
orgTeamEngineers
.
get
(
0
).
getTeamId
());
for
(
OrderInfoEntity
entity
:
orders
)
{
if
(
entity
.
getEngineerCode
().
equals
(
engineer
.
getEngineerCode
()))
{
return
Result
.
failed
(
String
.
format
(
"订单已指派个技术员[%s], 不必重复指派给同一个技术员"
,
engineer
.
getName
()));
}
SkillInfoEntity
skill
=
skillInfoDao
.
getByBrandAndTypeAndSkill
(
CommonUtil
.
fixBrand
(
entity
.
getBrand
()),
entity
.
getType
(),
entity
.
getSkill
());
entity
.
setTakeTime
(
skill
.
getTakeTime
());
entity
.
setPlanStartTime
(
entity
.
getExpectTimeBegin
());
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/OrderAssignImpl.java
View file @
cf59442
...
...
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import
com.dituhui.pea.common.BusinessException
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.common.ResultEnum
;
import
com.dituhui.pea.enums.StatusCodeEnum
;
import
com.dituhui.pea.order.common.OrderAssignCheck
;
import
com.dituhui.pea.order.common.TimeUtils
;
import
com.dituhui.pea.order.dao.*
;
...
...
@@ -13,6 +14,7 @@ import com.dituhui.pea.order.dto.param.Location;
import
com.dituhui.pea.order.dto.param.OrderDTO
;
import
com.dituhui.pea.order.dto.param.OrgTeamInfo
;
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.OrderStatusEnum
;
import
com.dituhui.pea.order.enums.ServiceStatusEnum
;
...
...
@@ -22,6 +24,7 @@ import com.dituhui.pea.pojo.saas.req.AdministrativeDistrictReq;
import
com.dituhui.pea.pojo.saas.resp.AdministrativeDistrictResp
;
import
com.dituhui.pea.util.DateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -154,41 +157,38 @@ public class OrderAssignImpl implements OrderAssign {
public
Result
<?>
orderAssign
(
OrderAssignReq
req
)
throws
BusinessException
{
// 服务单指派-指派提交
OrderInfoEntity
order
=
orderInfoDao
.
getByOrderId
(
req
.
getOrderId
());
if
(
order
==
null
)
{
throw
new
BusinessException
(
"订单不存在"
);
OrderInfoEntity
entity
=
orderInfoDao
.
getByOrderId
(
req
.
getOrderId
());
if
(
entity
==
null
)
{
return
Result
.
failed
(
"订单不存在"
);
}
EngineerInfoEntity
engineer
=
engineerInfoDao
.
getByEngineerCode
(
req
.
getEngineerCode
());
boolean
record
=
false
;
OrderInfoEntity
op
=
orderInfoDao
.
getByOrderIdAndDt
(
req
.
getOrderId
(),
order
.
getDt
());
if
(
op
!=
null
)
{
record
=
true
;
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
());
if
(
op
!=
null
&&
!
order
.
getAppointmentStatus
().
equals
(
"NOT_ASSIGNED"
)
&&
op
.
getEngineerCode
().
equals
(
req
.
getEngineerCode
()))
{
if
(
entity
!=
null
&&
!
entity
.
getAppointmentStatus
().
equals
(
"NOT_ASSIGNED"
)
&&
entity
.
getEngineerCode
().
equals
(
req
.
getEngineerCode
()))
{
throw
new
BusinessException
(
String
.
format
(
"订单已指派个技术员[%s], 不必重复指派给同一个技术员"
,
engineer
.
getName
()));
}
// OrderAssignCheck.Result result = orderAssignCheck.orderAssignCheck(orderId, order.getDt(), engineerCode);
// log.info("指派检查结果:{}", result);
// if (result.getIndex() < 0) {
// throw new BusinessException("指派失败, 未能找到合适的时间段, 请选择其他技术员");
// }
// OrderAssignCheck.OrderNode insertNode = result.getCurOrderNode();
// Timestamp planStartTime = Timestamp.valueOf(insertNode.getPlanStartTime());
// Timestamp planEndTime = Timestamp.valueOf(insertNode.getPlanEndTime());
// 更新order_info表状态
// String sql = "UPDATE OrderInfo e SET e.appointmentStatus = 'CONFIRM', e.appointmentMethod='MANUAL', e.planStartTime = :planStartTime, e.planEndTime = :panEndTime WHERE e.orderId = :orderId";
// Query query = entityManager.createQuery(sql);
// query.setParameter("planStartTime", planStartTime);
// query.setParameter("planEndTime", planEndTime);
// query.setParameter("orderId", orderId);
// query.executeUpdate();
order
.
setEngineerCode
(
engineer
.
getEngineerCode
());
orderInfoDao
.
save
(
order
);
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
);
// entity.setEngineerCode(engineer.getEngineerCode());
// orderInfoDao.save(order);
// 工单变更登记
commonService
.
addOrderEvent
(
req
.
getOrderId
(),
""
,
"PEA-WEB"
,
req
.
getOperator
(),
OrderStatusEnum
.
ASSIGN
.
getDescription
(),
OrderStatusEnum
.
ASSIGN
.
getDescription
(),
""
);
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/OrderCreateServiceImpl.java
View file @
cf59442
...
...
@@ -421,13 +421,13 @@ public class OrderCreateServiceImpl implements OrderCreateService {
entity
.
setTakeTime
(
skillInfoEntity
.
getTakeTime
());
String
joinTags
=
CollectionUtils
.
isEmpty
(
req
.
getOrderTags
())
?
""
:
String
.
join
(
","
,
req
.
getOrderTags
());
entity
.
setBeanTags
(
joinTags
);
entity
.
setIsMultiple
(
joinTags
.
contains
(
"重物搬运"
)
?
1
:
0
);
entity
.
setBeanPriority
(
req
.
getPriority
());
if
(
req
.
getPriority
().
equals
(
"1"
))
{
entity
.
setAppointmentMethod
(
AppointmentMethodEnum
.
AUTO_NOW
.
name
());
//发送通知分部消息
// sendMsg(entity.getOrgBranchId(), orderId, entity.getExpectTimeBegin().toLocalDate());
}
entity
.
setIsMultiple
(
joinTags
.
contains
(
"重物搬运"
)
?
1
:
0
);
//一家多单
Result
<
String
>
addMultipleOrders
=
orderInfoService
.
addMultipleOrders
(
entity
.
getDt
(),
location
.
getAddressId
(),
orderId
);
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/OrderInfoServiceImpl.java
View file @
cf59442
...
...
@@ -7,6 +7,7 @@ import com.dituhui.pea.common.Result;
import
com.dituhui.pea.common.ResultEnum
;
import
com.dituhui.pea.enums.StatusCodeEnum
;
import
com.dituhui.pea.order.common.TimeUtils
;
import
com.dituhui.pea.order.constant.OrderReschedulingReason
;
import
com.dituhui.pea.order.dao.*
;
import
com.dituhui.pea.order.dto.MsgDTO
;
import
com.dituhui.pea.order.dto.OrderReschedule
;
...
...
@@ -182,6 +183,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
reschedule
.
setProductType
(
request
.
getProductType
());
reschedule
.
setServiceType
(
request
.
getServiceType
());
reschedule
.
setReschedulingReason
(
request
.
getReschedulingReason
());
reschedule
.
setOrderTags
(
request
.
getOrderTags
());
reschedule
.
setExpectBegin
(
DateUtil
.
handleDate
(
request
.
getNewReservationTime
(),
orderInfo
.
getExpectTimeBegin
()));
reschedule
.
setExpectEnd
(
DateUtil
.
handleDate
(
request
.
getNewReservationTime
(),
orderInfo
.
getExpectTimeEnd
()));
if
(
StringUtils
.
isNotBlank
(
request
.
getDescription
()))
{
...
...
@@ -220,6 +222,21 @@ public class OrderInfoServiceImpl implements OrderInfoService {
order
.
setExpectTimeDesc
(
req
.
getExpectDesc
());
order
.
setOrderStatus
(
OrderStatusEnum
.
RESCHEDULED
.
getCode
());
boolean
skillUpdate
=
false
;
if
(
CollectionUtils
.
isEmpty
(
req
.
getOrderTags
()))
{
if
(
StringUtils
.
isBlank
(
order
.
getBeanTags
()))
{
String
joinTags
=
CollectionUtils
.
isEmpty
(
req
.
getOrderTags
())
?
""
:
String
.
join
(
","
,
req
.
getOrderTags
());
order
.
setBeanTags
(
joinTags
);
order
.
setIsMultiple
(
joinTags
.
contains
(
"重物搬运"
)
?
1
:
0
);
}
else
{
for
(
String
orderTag
:
req
.
getOrderTags
())
{
if
(
order
.
getBeanTags
().
contains
(
orderTag
))
{
continue
;
}
order
.
setBeanTags
(
order
.
getBeanTags
()
+
","
+
orderTag
);
}
order
.
setIsMultiple
(
order
.
getBeanTags
().
contains
(
"重物搬运"
)
?
1
:
0
);
}
}
if
(
StringUtils
.
isNotBlank
(
req
.
getBrand
())
&&
!
CommonUtil
.
fixBrand
(
req
.
getBrand
()).
equals
(
order
.
getBrand
()))
{
order
.
setBrand
(
CommonUtil
.
fixBrand
(
req
.
getBrand
()));
skillUpdate
=
true
;
...
...
@@ -290,7 +307,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
// i.自有:优先改约指派给当前工程师
// ii.网点:优先改约指派给当前网点
// (不给当前工程师)
if
(!
isToday
&&
isBelong
&&
skillUpdate
)
{
if
(!
isToday
&&
isBelong
&&
skillUpdate
&&
order
.
getIsAppointEngineer
()
!=
1
)
{
//地址变更需要从新分单
order
=
orderFendan
(
order
,
req
,
location
);
clusterId
=
order
.
getOrgClusterId
();
...
...
@@ -370,6 +387,11 @@ public class OrderInfoServiceImpl implements OrderInfoService {
return
Result
.
success
(
null
);
}
@Override
public
Result
<?>
orderReschedulingReason
()
{
return
Result
.
success
(
OrderReschedulingReason
.
ReschedulingReasonMap
);
}
/**
* 订单重新分单
*
...
...
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