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 0c9f6386
authored
Jun 12, 2023
by
丁伟峰
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into develop
2 parents
ab027b08
3e5a6c06
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
167 additions
and
59 deletions
project-order/src/main/java/com/alibaba/cloud/integration/order/controller/EngineerController.java
project-order/src/main/java/com/alibaba/cloud/integration/order/dto/EngineerInfoListResp.java
project-order/src/main/java/com/alibaba/cloud/integration/order/dto/OrderAppointmentListResp.java
project-order/src/main/java/com/alibaba/cloud/integration/order/entity/EngineerInfo.java
project-order/src/main/java/com/alibaba/cloud/integration/order/service/EngineerService.java
project-order/src/main/java/com/alibaba/cloud/integration/order/service/impl/EngineerServiceImpl.java
project-order/src/main/java/com/alibaba/cloud/integration/order/service/impl/OrderServiceDetailImpl.java
project-order/src/main/java/com/alibaba/cloud/integration/order/controller/EngineerController.java
View file @
0c9f638
...
...
@@ -27,6 +27,18 @@ public class EngineerController {
return
res
;
}
@GetMapping
(
"/engineer/info/detail"
)
public
Result
<?>
getEngineerInfoDetail
(
@RequestParam
String
engineerCode
)
{
// 获取工程师基础信息列表
Result
<?>
res
=
null
;
try
{
res
=
engineerService
.
getEngineerInfoDetail
(
engineerCode
);
}
catch
(
BusinessException
e
)
{
Result
.
failed
(
e
.
getMessage
());
}
return
res
;
}
@GetMapping
(
"/engineer/skill/list"
)
public
Result
<?>
getEngineerSkillList
(
@RequestParam
long
page
,
@RequestParam
long
size
)
{
// 获取工程师技能信息列表
...
...
@@ -39,6 +51,18 @@ public class EngineerController {
return
res
;
}
@GetMapping
(
"/engineer/skill/detail"
)
public
Result
<?>
getEngineerSkillDetail
(
@RequestParam
String
engineerCode
)
{
// 获取工程师技能信息列表
Result
<?>
res
=
null
;
try
{
res
=
engineerService
.
getEngineerSkillDetail
(
engineerCode
);
}
catch
(
BusinessException
e
)
{
Result
.
failed
(
e
.
getMessage
());
}
return
res
;
}
@PostMapping
(
"/engineer/skill/update"
)
public
Result
<?>
engineerSkillUpdate
(
@RequestBody
EngineerSkillUpdateReqDTO
req
)
{
// 获取工程师技能信息修改
...
...
@@ -62,6 +86,18 @@ public class EngineerController {
return
res
;
}
@GetMapping
(
"/engineer/business/detail"
)
public
Result
<?>
getEngineerBusinessDetail
(
@RequestParam
String
engineerCode
)
{
// 技术员业务属性配置列表
Result
<?>
res
=
null
;
try
{
res
=
engineerService
.
getEngineerBusinessDetail
(
engineerCode
);
}
catch
(
BusinessException
e
)
{
Result
.
failed
(
e
.
getMessage
());
}
return
res
;
}
@PostMapping
(
"/engineer/business/update"
)
public
Result
<?>
engineerBusinessUpdate
(
@RequestBody
EngineerBusinessUpdateReqDTO
req
)
{
// 技术员业务属性配置更新
...
...
project-order/src/main/java/com/alibaba/cloud/integration/order/dto/EngineerInfoListResp.java
View file @
0c9f638
...
...
@@ -23,5 +23,8 @@ public class EngineerInfoListResp {
private
String
phone
;
private
String
address
;
private
String
kind
;
private
List
<
String
>
tags
;
private
List
<
String
>
credentials
;
private
String
grade
;
}
}
project-order/src/main/java/com/alibaba/cloud/integration/order/dto/OrderAppointmentListResp.java
View file @
0c9f638
...
...
@@ -12,8 +12,9 @@ public class OrderAppointmentListResp {
@Data
public
static
class
OrderAppointment
{
private
String
title
;
private
String
engineerCode
;
private
String
expectTime
;
private
List
<
List
<
KV
>>
engineer
s
;
private
List
<
KV
>
item
s
;
private
List
<
KV
>
timelines
;
}
}
...
...
project-order/src/main/java/com/alibaba/cloud/integration/order/entity/EngineerInfo.java
View file @
0c9f638
package
com
.
alibaba
.
cloud
.
integration
.
order
.
entity
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
lombok.Data
;
import
java.sql.Timestamp
;
...
...
@@ -21,6 +22,7 @@ public class EngineerInfo {
private
String
vehicle
;
private
String
vehicleNo
;
private
String
beanStatus
;
private
JsonNode
tags
;
private
String
memo
;
private
Timestamp
createTime
;
private
Timestamp
updateTime
;
...
...
project-order/src/main/java/com/alibaba/cloud/integration/order/service/EngineerService.java
View file @
0c9f638
...
...
@@ -8,13 +8,16 @@ public interface EngineerService {
// 获取公司列表
Result
<?>
getEngineerInfoList
(
long
page
,
long
size
);
Result
<?>
getEngineerInfoDetail
(
String
engineerCode
);
// 获取工程师技能列表
Result
<?>
getEngineerSkillList
(
long
page
,
long
size
);
Result
<?>
getEngineerSkillDetail
(
String
engineerCode
);
Result
<?>
engineerSkillUpdate
(
String
engineerCode
,
List
<
String
>
categoryIds
);
// 工程师业务属性配置列表
Result
<?>
getEngineerBusinessList
(
long
page
,
long
size
);
Result
<?>
getEngineerBusinessDetail
(
String
engineerCode
);
// 技术员业务属性配置修改
Result
<?>
engineerBusinessUpdate
(
String
engineerCode
,
Integer
maxNum
,
Integer
maxMutine
,
String
departure
,
String
priority
);
...
...
project-order/src/main/java/com/alibaba/cloud/integration/order/service/impl/EngineerServiceImpl.java
View file @
0c9f638
...
...
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -40,15 +41,13 @@ public class EngineerServiceImpl implements EngineerService {
@Override
public
Result
<?>
getEngineerInfoList
(
long
page
,
long
size
)
{
// 查询工程师信息
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfo
(
page
,
size
);
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfo
IPage
(
page
,
size
);
List
<
EngineerInfo
>
records
=
pg
.
getRecords
();
// 获取groupIds
List
<
String
>
groupIds
=
new
ArrayList
<>();
for
(
EngineerInfo
e:
records
){
groupIds
.
add
(
e
.
getGroupId
());
}
List
<
String
>
groupIds
=
records
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
// 获取Map<groupId, groupName>
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
...
...
@@ -63,12 +62,34 @@ public class EngineerServiceImpl implements EngineerService {
return
Result
.
success
(
res
);
}
@Override
public
Result
<?>
getEngineerInfoDetail
(
String
engineerCode
)
{
// 获取技术员基础信息详情
EngineerInfoListResp
.
EngineerInfo
empty
=
new
EngineerInfoListResp
.
EngineerInfo
();
// 获取技术员列表
List
<
EngineerInfo
>
records
=
this
.
queryEngineerInfos
(
engineerCode
);
if
(
records
.
isEmpty
()){
return
Result
.
success
(
empty
);
}
List
<
String
>
groupIds
=
records
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
List
<
EngineerInfoListResp
.
EngineerInfo
>
items
=
this
.
packEngineerInfo
(
records
,
groupNames
);
if
(
items
.
isEmpty
())
{
return
Result
.
success
(
empty
);
}
return
Result
.
success
(
items
.
get
(
0
));
}
@Transactional
@Override
public
Result
<?>
getEngineerSkillList
(
long
page
,
long
size
)
{
// 获取技术员技能列表
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfo
(
page
,
size
);
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfo
IPage
(
page
,
size
);
List
<
EngineerInfo
>
engineers
=
pg
.
getRecords
();
...
...
@@ -106,6 +127,12 @@ public class EngineerServiceImpl implements EngineerService {
return
Result
.
success
(
res
);
}
@Override
public
Result
<?>
getEngineerSkillDetail
(
String
engineerCode
)
{
// 获取工程师技能详情
return
null
;
}
@Transactional
@Override
public
Result
<?>
engineerSkillUpdate
(
String
engineerCode
,
List
<
String
>
categoryIds
)
{
...
...
@@ -153,7 +180,7 @@ public class EngineerServiceImpl implements EngineerService {
// 技术员业务属性配置列表
// 查询技术员列表
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfo
(
page
,
size
);
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfo
IPage
(
page
,
size
);
List
<
EngineerInfo
>
records
=
pg
.
getRecords
();
...
...
@@ -209,6 +236,12 @@ public class EngineerServiceImpl implements EngineerService {
return
Result
.
success
(
res
);
}
@Override
public
Result
<?>
getEngineerBusinessDetail
(
String
engineerCode
)
{
// 获取技术员业务熟悉详情
return
null
;
}
@Transactional
@Override
public
Result
<?>
engineerBusinessUpdate
(
String
engineerCode
,
Integer
maxNum
,
Integer
maxMinute
,
String
departure
,
String
priority
)
{
...
...
@@ -238,7 +271,7 @@ public class EngineerServiceImpl implements EngineerService {
return
Result
.
success
(
null
);
}
private
IPage
<
EngineerInfo
>
queryEngineerInfo
(
long
page
,
long
size
)
{
private
IPage
<
EngineerInfo
>
queryEngineerInfo
IPage
(
long
page
,
long
size
)
{
// 分页查询工程师基础信息
LambdaQueryWrapper
<
EngineerInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
lqw
.
orderByAsc
(
EngineerInfo:
:
getGroupId
);
...
...
@@ -249,6 +282,13 @@ public class EngineerServiceImpl implements EngineerService {
return
pg
;
}
private
List
<
EngineerInfo
>
queryEngineerInfos
(
String
engineerCode
)
{
// 分页查询工程师基础信息
LambdaQueryWrapper
<
EngineerInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
lqw
.
eq
(
EngineerInfo:
:
getEngineerCode
,
engineerCode
);
return
engineerInfoMPDao
.
selectList
(
lqw
);
}
private
HashMap
<
String
,
String
>
queryGroupNames
(
List
<
String
>
groupIds
)
{
//查询小组名称映射关系
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
...
...
@@ -308,7 +348,7 @@ public class EngineerServiceImpl implements EngineerService {
private
List
<
EngineerInfoListResp
.
EngineerInfo
>
packEngineerInfo
(
List
<
EngineerInfo
>
engineers
,
HashMap
<
String
,
String
>
groups
)
{
String
groupName
,
age
,
workType
;
String
groupName
,
age
,
kind
;
List
<
EngineerInfoListResp
.
EngineerInfo
>
items
=
new
ArrayList
<>();
for
(
EngineerInfo
e:
engineers
)
{
...
...
@@ -319,15 +359,39 @@ public class EngineerServiceImpl implements EngineerService {
item
.
setSex
(
e
.
getGender
());
item
.
setPhone
(
e
.
getPhone
());
item
.
setAddress
(
e
.
getAddress
());
item
.
setGrade
(
e
.
getGrade
());
// group name
groupName
=
groups
.
getOrDefault
(
e
.
getGroupId
(),
""
);
item
.
setGroupName
(
groupName
);
// 年龄
age
=
this
.
getEngineerAge
(
e
.
getBirth
());
item
.
setAge
(
age
);
workType
=
(
e
.
getKind
()
==
1
)
?
"fullJob"
:
"partJob"
;
item
.
setKind
(
workType
);
// 工作类型:全职/兼职
kind
=
(
e
.
getKind
()
==
1
)
?
"fullJob"
:
"partJob"
;
item
.
setKind
(
kind
);
if
(
e
.
getCredentials
()
!=
null
){
item
.
setCredentials
(
Arrays
.
asList
(
e
.
getCredentials
().
split
(
"、"
)));
}
else
{
item
.
setCredentials
(
new
ArrayList
<
String
>());
}
// 标签
List
<
String
>
tags
=
new
ArrayList
<>();
if
(
e
.
getTags
()
!=
null
)
{
Iterator
<
Map
.
Entry
<
String
,
JsonNode
>>
it
=
e
.
getTags
().
fields
();
while
(
it
.
hasNext
()){
Map
.
Entry
<
String
,
JsonNode
>
field
=
it
.
next
();
String
name
=
field
.
getKey
();
JsonNode
value
=
field
.
getValue
();
tags
.
add
(
String
.
format
(
"%s+%d"
,
field
.
getKey
(),
field
.
getValue
().
intValue
()));
}
}
else
{
item
.
setTags
(
tags
);
}
items
.
add
(
item
);
}
...
...
project-order/src/main/java/com/alibaba/cloud/integration/order/service/impl/OrderServiceDetailImpl.java
View file @
0c9f638
...
...
@@ -6,7 +6,6 @@ import com.alibaba.cloud.integration.order.dto.*;
import
com.alibaba.cloud.integration.order.entity.*
;
import
com.alibaba.cloud.integration.order.service.OrderServiceDetail
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
org.aspectj.weaver.ast.Or
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -76,16 +75,21 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
@Transactional
@Override
public
Result
<?>
getOrderAppointmentList
(
String
orderId
)
{
List
<
OrderAppointmentListResp
.
OrderAppointment
>
items
=
new
ArrayList
<>();
// 获取预约单里列表
OrderAppointmentListResp
res
=
new
OrderAppointmentListResp
();
// 查询预约单列表
List
<
OrderAppointment
>
appoints
=
this
.
queryOrderAppointments
(
orderId
);
if
(
appoints
.
isEmpty
()){
// 没有指派单列表,返回
res
.
setOrderId
(
orderId
);
res
.
setOrders
(
List
.
of
());
return
Result
.
success
(
res
);
}
// 工程师ID列表
List
<
String
>
egCodes
=
new
ArrayList
<>();
for
(
OrderAppointment
o:
appoints
)
{
egCodes
.
add
(
o
.
getEngineerCode
());
}
List
<
String
>
egCodes
=
appoints
.
stream
().
map
(
OrderAppointment:
:
getEngineerCode
).
collect
(
Collectors
.
toList
());
// 获取工程师基础信息列表
HashMap
<
String
,
EngineerInfo
>
egInfo
=
this
.
getEngineerInfos
(
egCodes
);
...
...
@@ -93,49 +97,42 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
// 获取工程师技能列表
HashMap
<
String
,
EngineerSkill
>
egSkill
=
this
.
getEngineerSkills
(
egCodes
);
// 获取订单timeline
// 获取
subOrder
订单timeline
Map
<
String
,
List
<
OrderTimeline
>>
timelines
=
this
.
getOrderTimelines
(
orderId
);
// 对指派单列表按照subOrderId降序排序, 获取排序的subOrderId列表, 然后根据subOrderId分组
Comparator
<
OrderAppointment
>
sbDesc
=
Comparator
.
comparing
(
OrderAppointment:
:
getSuborderId
,
String
.
CASE_INSENSITIVE_ORDER
).
reversed
();
List
<
OrderAppointment
>
results
=
appoints
.
stream
().
sorted
(
sbDesc
).
collect
(
Collectors
.
toList
());
// 根据subOrderId分组
Map
<
String
,
List
<
OrderAppointment
>>
appointOrders
=
results
.
stream
().
collect
(
Collectors
.
groupingBy
(
OrderAppointment:
:
getSuborderId
));
//
Map<String, List<OrderAppointment>> appointOrders = results.stream().collect(Collectors.groupingBy(OrderAppointment::getSuborderId));
// 获取排序的subOrderId(降序)
List
<
String
>
subOrderIds
=
new
ArrayList
<>();
for
(
String
k:
appointOrders
.
keySet
()){
subOrderIds
.
add
(
k
);
}
Collections
.
reverse
(
subOrderIds
);
/*
String lastSubOrderId = results.get(0).getSuborderId();
for(OrderAppointment o: results) {
String subOrderId = o.getSuborderId();
for
(
String
subOrderId:
subOrderIds
){
List
<
OrderAppointment
>
orders
=
appointOrders
.
get
(
subOrderId
);
OrderAppointment
order
=
orders
.
get
(
0
);
// 第一个订单
EngineerInfo eg = egInfo.getOrDefault(o.getEngineerCode(), null);
EngineerSkill es = egSkill.getOrDefault(o.getEngineerCode(), null);
OrderAppointmentListResp
.
OrderAppointment
op
=
new
OrderAppointmentListResp
.
OrderAppointment
();
// 获取工程师姓名
String engineerName = (eg != null) ? eg.getName(): o.getEngineerCode();
// 获取工程师列表信息
List
<
List
<
KV
>>
egInfos
=
new
ArrayList
<>();
for
(
OrderAppointment
o:
orders
)
{
String
egCode
=
o
.
getEngineerCode
();
egInfos
.
add
(
this
.
packEngineerInfos
(
egInfo
.
get
(
egCode
),
egSkill
.
get
(
egCode
)));
// 获取title
String title = engineerName;
if (lastSubOrderId.equals(subOrderId)) {
title = String.format("%s_%s", engineerName, this.Timestamp2Datetime(o.getExpectTime(), "yyyyMMdd"));
}
op
.
setEngineers
(
egInfos
);
//获取timeline信息
OrderAppointmentListResp.OrderAppointment op = new OrderAppointmentListResp.OrderAppointment();
op.setTitle(title);
op.setEngineerCode(o.getEngineerCode());
op.setExpectTime(o.getExpectTime().toString());
op.setTimelines(this.packOrderTimeline(timelines.get(subOrderId)));
op
.
setTitle
(
order
.
getSuborderId
());
op
.
setExpectTime
(
order
.
getExpectTime
().
toString
());
items
.
add
(
op
);
op.setItems(this.packEngineerInfos(eg, es));
}
*/
// 返回结果
OrderAppointmentListResp
res
=
new
OrderAppointmentListResp
();
res
.
setOrderId
(
orderId
);
res
.
setOrders
(
items
);
return
Result
.
success
(
res
);
return
null
;
}
@Transactional
...
...
@@ -228,26 +225,28 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
private
List
<
KV
>
packEngineerInfos
(
EngineerInfo
eg
,
EngineerSkill
skill
)
{
// 获取工程师信息
List
<
KV
>
items
=
new
ArrayList
<>();
String
kind
=
""
;
String
age
=
""
;
if
(
eg
.
getKind
()
==
1
)
{
kind
=
"全职"
;
}
else
{
kind
=
"兼职"
;
if
(
eg
==
null
&&
skill
==
null
)
{
return
items
;
}
if
(
eg
!=
null
)
{
items
.
add
(
this
.
packEngineer
(
"技术员:"
,
eg
.
getName
(),
"engineer"
));
items
.
add
(
this
.
packEngineer
(
"工号:"
,
eg
.
getEngineerCode
(),
""
));
items
.
add
(
this
.
packEngineer
(
"类型:"
,
(
eg
.
getKind
()
==
1
)
?
"全职"
:
"兼职"
,
""
));
items
.
add
(
this
.
packEngineer
(
"手机号:"
,
eg
.
getPhone
(),
""
));
}
String
age
=
""
;
if
(
age
.
isEmpty
())
{
age
=
"未知"
;
}
else
{
age
=
eg
.
getBirth
();
}
List
<
KV
>
items
=
new
ArrayList
<>();
items
.
add
(
this
.
packEngineer
(
"技术员:"
,
eg
.
getName
(),
"engineer"
));
items
.
add
(
this
.
packEngineer
(
"小组:"
,
"老王组"
,
""
));
items
.
add
(
this
.
packEngineer
(
"类型:"
,
kind
,
""
));
items
.
add
(
this
.
packEngineer
(
"性别/年龄:"
,
eg
.
getGender
()+
"/"
+
age
,
""
));
items
.
add
(
this
.
packEngineer
(
"手机号:"
,
eg
.
getPhone
(),
""
));
items
.
add
(
this
.
packEngineer
(
"工号:"
,
eg
.
getEngineerCode
(),
""
));
items
.
add
(
this
.
packEngineer
(
"技能:"
,
"TODO"
,
""
));
// TODO
return
items
;
}
...
...
@@ -295,8 +294,8 @@ public class OrderServiceDetailImpl implements OrderServiceDetail {
return
items
;
}
private
KV
packEngineer
(
String
title
,
String
value
,
Object
params
)
{
return
this
.
PackKV
(
title
,
value
,
null
,
null
,
params
);
private
KV
packEngineer
(
String
title
,
String
value
,
String
type
)
{
return
this
.
PackKV
(
title
,
value
,
type
,
null
,
null
);
}
private
KV
packTimeline
(
String
title
,
String
value
,
String
status
)
{
...
...
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