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 33b71214
authored
Jun 19, 2023
by
丁伟峰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
技术员甘特图,从"工作区",移到"技术员"模块
1 parent
a89acf66
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
546 additions
and
539 deletions
project-order/src/main/java/com/dituhui/pea/order/controller/EngineerController.java
project-order/src/main/java/com/dituhui/pea/order/controller/WorkbenchController.java
project-order/src/main/java/com/dituhui/pea/order/service/EngineerService.java
project-order/src/main/java/com/dituhui/pea/order/service/WorkbenchService.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/WorkbenchServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/controller/EngineerController.java
View file @
33b7121
...
@@ -4,10 +4,14 @@ import com.dituhui.pea.common.BusinessException;
...
@@ -4,10 +4,14 @@ import com.dituhui.pea.common.BusinessException;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dto.EngineerBusinessUpdateReqDTO
;
import
com.dituhui.pea.order.dto.EngineerBusinessUpdateReqDTO
;
import
com.dituhui.pea.order.dto.EngineerSkillUpdateReqDTO
;
import
com.dituhui.pea.order.dto.EngineerSkillUpdateReqDTO
;
import
com.dituhui.pea.order.dto.EngineersGanttReqDTO
;
import
com.dituhui.pea.order.service.EngineerService
;
import
com.dituhui.pea.order.service.EngineerService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
@Slf4j
@RestController
@RestController
@RequestMapping
(
"/pea-order"
)
@RequestMapping
(
"/pea-order"
)
public
class
EngineerController
{
public
class
EngineerController
{
...
@@ -111,4 +115,17 @@ public class EngineerController {
...
@@ -111,4 +115,17 @@ public class EngineerController {
}
}
return
res
;
return
res
;
}
}
@PostMapping
(
value
=
"/engineer/schedule/gantt"
)
public
Result
<?>
getEngineersGanttList
(
@Validated
@RequestBody
EngineersGanttReqDTO
reqDTO
)
{
// todo 待移到 controller的engineer中
log
.
info
(
"getEngineersGanttList: {}"
,
reqDTO
);
Result
<?>
res
=
null
;
try
{
res
=
engineerService
.
getEngineersGanttList
(
reqDTO
);
}
catch
(
BusinessException
e
)
{
return
Result
.
failed
(
e
.
getMessage
());
}
return
res
;
}
}
}
project-order/src/main/java/com/dituhui/pea/order/controller/WorkbenchController.java
View file @
33b7121
...
@@ -2,13 +2,14 @@ package com.dituhui.pea.order.controller;
...
@@ -2,13 +2,14 @@ package com.dituhui.pea.order.controller;
import
com.dituhui.pea.common.BusinessException
;
import
com.dituhui.pea.common.BusinessException
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dto.EngineersGanttReqDTO
;
import
com.dituhui.pea.order.dto.OrderChangeListReqDTO
;
import
com.dituhui.pea.order.dto.OrderChangeListReqDTO
;
import
com.dituhui.pea.order.service.WorkbenchService
;
import
com.dituhui.pea.order.service.WorkbenchService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Slf4j
@Slf4j
@RestController
@RestController
...
@@ -28,17 +29,4 @@ public class WorkbenchController {
...
@@ -28,17 +29,4 @@ public class WorkbenchController {
}
}
return
res
;
return
res
;
}
}
@PostMapping
(
value
=
"/engineer/schedule/gantt"
)
public
Result
<?>
getEngineersGanttList
(
@Validated
@RequestBody
EngineersGanttReqDTO
reqDTO
)
{
// todo 待移到 controller的engineer中
log
.
info
(
"getEngineersGanttList: {}"
,
reqDTO
);
Result
<?>
res
=
null
;
try
{
res
=
workbenchService
.
getEngineersGanttList
(
reqDTO
);
}
catch
(
BusinessException
e
)
{
return
Result
.
failed
(
e
.
getMessage
());
}
return
res
;
}
}
}
project-order/src/main/java/com/dituhui/pea/order/service/EngineerService.java
View file @
33b7121
package
com
.
dituhui
.
pea
.
order
.
service
;
package
com
.
dituhui
.
pea
.
order
.
service
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dto.EngineersGanttReqDTO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -21,4 +22,6 @@ public interface EngineerService {
...
@@ -21,4 +22,6 @@ public interface EngineerService {
// 技术员业务属性配置修改
// 技术员业务属性配置修改
Result
<?>
engineerBusinessUpdate
(
String
engineerCode
,
Integer
maxNum
,
Integer
maxMutine
,
String
departure
,
String
priority
);
Result
<?>
engineerBusinessUpdate
(
String
engineerCode
,
Integer
maxNum
,
Integer
maxMutine
,
String
departure
,
String
priority
);
Result
<?>
getEngineersGanttList
(
EngineersGanttReqDTO
ganttReqDTO
);
}
}
project-order/src/main/java/com/dituhui/pea/order/service/WorkbenchService.java
View file @
33b7121
...
@@ -6,6 +6,4 @@ import com.dituhui.pea.order.dto.OrderChangeListReqDTO;
...
@@ -6,6 +6,4 @@ import com.dituhui.pea.order.dto.OrderChangeListReqDTO;
public
interface
WorkbenchService
{
public
interface
WorkbenchService
{
Result
<?>
getOrderChangeList
(
OrderChangeListReqDTO
orderChangeListReqDTO
);
Result
<?>
getOrderChangeList
(
OrderChangeListReqDTO
orderChangeListReqDTO
);
Result
<?>
getEngineersGanttList
(
EngineersGanttReqDTO
ganttReqDTO
);
}
}
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerServiceImpl.java
View file @
33b7121
...
@@ -2,24 +2,16 @@ package com.dituhui.pea.order.service.impl;
...
@@ -2,24 +2,16 @@ package com.dituhui.pea.order.service.impl;
import
com.dituhui.pea.common.BusinessException
;
import
com.dituhui.pea.common.BusinessException
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dao.EngineerBusinessMPDao
;
import
com.dituhui.pea.order.dao.*
;
import
com.dituhui.pea.order.dao.EngineerInfoMPDao
;
import
com.dituhui.pea.order.dto.*
;
import
com.dituhui.pea.order.dao.EngineerSkillMPDao
;
import
com.dituhui.pea.order.entity.*
;
import
com.dituhui.pea.order.dao.OrgGroupMPDao
;
import
com.dituhui.pea.order.dto.EngineerBusinessListResp
;
import
com.dituhui.pea.order.dto.EngineerInfoListResp
;
import
com.dituhui.pea.order.dto.EngineerSkillListResp
;
import
com.dituhui.pea.order.entity.EngineerBusiness
;
import
com.dituhui.pea.order.entity.EngineerInfo
;
import
com.dituhui.pea.order.entity.EngineerSkill
;
import
com.dituhui.pea.order.entity.OrgGroup
;
import
com.dituhui.pea.order.service.EngineerService
;
import
com.dituhui.pea.order.service.EngineerService
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.slf4j.Logger
;
import
lombok.extern.slf4j.Slf4j
;
import
org.
slf4j.LoggerFactory
;
import
org.
apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
...
@@ -30,433 +22,520 @@ import java.time.format.DateTimeFormatter;
...
@@ -30,433 +22,520 @@ import java.time.format.DateTimeFormatter;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
@Service
public
class
EngineerServiceImpl
implements
EngineerService
{
public
class
EngineerServiceImpl
implements
EngineerService
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
@Autowired
private
EngineerInfoMPDao
engineerInfoMPDao
;
@Autowired
private
EngineerInfoMPDao
engineerInfoMPDao
;
@Autowired
private
EngineerSkillMPDao
engineerSkillMPDao
;
@Autowired
private
EngineerSkillMPDao
engineerSkillMPDao
;
@Autowired
private
OrgGroupMPDao
orgGroupMPDao
;
@Autowired
private
OrgGroupMPDao
orgGroupMPDao
;
@Autowired
private
EngineerBusinessMPDao
engineerBusinessDao
;
@Autowired
private
EngineerBusinessMPDao
engineerBusinessDao
;
@Autowired
private
OrderRequestDao
orderRequestDao
;
@Transactional
@Override
@Autowired
public
Result
<?>
getEngineerInfoList
(
long
page
,
long
size
)
{
private
OrderAppointmentDao
orderAppointmentDao
;
// 查询工程师信息
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfoIPage
(
page
,
size
);
@Autowired
private
EngineerInfoDao
engineerInfoDao
;
List
<
EngineerInfo
>
records
=
pg
.
getRecords
();
@Autowired
// 获取groupIds
private
CapacityEngineerStatDao
capacityEngineerStatDao
;
List
<
String
>
groupIds
=
records
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
@Transactional
// 获取Map<groupId, groupName>
@Override
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
public
Result
<?>
getEngineerInfoList
(
long
page
,
long
size
)
{
// 查询工程师信息
// 设置返回值
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfoIPage
(
page
,
size
);
EngineerInfoListResp
res
=
new
EngineerInfoListResp
();
res
.
setContent
(
this
.
packEngineerInfos
(
records
,
groupNames
));
List
<
EngineerInfo
>
records
=
pg
.
getRecords
();
res
.
setTotal
(
pg
.
getTotal
());
res
.
setPages
(
pg
.
getPages
());
// 获取groupIds
res
.
setPageCurrent
(
pg
.
getCurrent
());
List
<
String
>
groupIds
=
records
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
res
.
setPageSize
(
pg
.
getSize
());
// 获取Map<groupId, groupName>
return
Result
.
success
(
res
);
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
}
// 设置返回值
@Override
EngineerInfoListResp
res
=
new
EngineerInfoListResp
();
public
Result
<?>
getEngineerInfoDetail
(
String
engineerCode
)
throws
BusinessException
{
res
.
setContent
(
this
.
packEngineerInfos
(
records
,
groupNames
));
// 获取技术员基础信息详情
res
.
setTotal
(
pg
.
getTotal
());
res
.
setPages
(
pg
.
getPages
());
// 获取技术员列表
res
.
setPageCurrent
(
pg
.
getCurrent
());
List
<
EngineerInfo
>
records
=
this
.
queryEngineerInfos
(
engineerCode
);
res
.
setPageSize
(
pg
.
getSize
());
if
(
records
.
isEmpty
())
{
throw
new
BusinessException
(
"技术员不存在"
);
return
Result
.
success
(
res
);
}
}
List
<
String
>
groupIds
=
records
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
@Override
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
public
Result
<?>
getEngineerInfoDetail
(
String
engineerCode
)
throws
BusinessException
{
// 获取技术员基础信息详情
List
<
EngineerInfoListResp
.
EngineerInfo
>
items
=
this
.
packEngineerInfos
(
records
,
groupNames
);
if
(
items
.
isEmpty
())
{
// 获取技术员列表
throw
new
BusinessException
(
"技术员不存在"
);
List
<
EngineerInfo
>
records
=
this
.
queryEngineerInfos
(
engineerCode
);
}
if
(
records
.
isEmpty
())
{
return
Result
.
success
(
items
.
get
(
0
));
throw
new
BusinessException
(
"技术员不存在"
);
}
}
@Transactional
List
<
String
>
groupIds
=
records
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
@Override
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
public
Result
<?>
getEngineerSkillList
(
long
page
,
long
size
)
{
// 获取技术员技能列表
List
<
EngineerInfoListResp
.
EngineerInfo
>
items
=
this
.
packEngineerInfos
(
records
,
groupNames
);
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfoIPage
(
page
,
size
);
if
(
items
.
isEmpty
())
{
List
<
EngineerInfo
>
engineers
=
pg
.
getRecords
();
throw
new
BusinessException
(
"技术员不存在"
);
}
EngineerSkillListResp
res
=
new
EngineerSkillListResp
();
return
Result
.
success
(
items
.
get
(
0
));
res
.
setTotal
(
pg
.
getTotal
());
}
res
.
setPages
(
pg
.
getPages
());
res
.
setPageCurrent
(
pg
.
getCurrent
());
@Transactional
res
.
setPageSize
(
pg
.
getSize
());
@Override
res
.
setContent
(
this
.
packEngineerSkills
(
engineers
));
public
Result
<?>
getEngineerSkillList
(
long
page
,
long
size
)
{
return
Result
.
success
(
res
);
// 获取技术员技能列表
}
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfoIPage
(
page
,
size
);
List
<
EngineerInfo
>
engineers
=
pg
.
getRecords
();
@Override
public
Result
<?>
getEngineerSkillDetail
(
String
engineerCode
)
throws
BusinessException
{
EngineerSkillListResp
res
=
new
EngineerSkillListResp
();
// 获取工程师技能详情
res
.
setTotal
(
pg
.
getTotal
());
List
<
EngineerInfo
>
engineers
=
this
.
queryEngineerInfos
(
engineerCode
);
res
.
setPages
(
pg
.
getPages
());
if
(
engineers
.
isEmpty
())
{
res
.
setPageCurrent
(
pg
.
getCurrent
());
throw
new
BusinessException
(
"技术员不存在"
);
res
.
setPageSize
(
pg
.
getSize
());
}
res
.
setContent
(
this
.
packEngineerSkills
(
engineers
));
List
<
EngineerSkillListResp
.
EngineerSkill
>
items
=
this
.
packEngineerSkills
(
engineers
);
return
Result
.
success
(
res
);
if
(
items
.
isEmpty
())
{
}
throw
new
BusinessException
(
"技术员不存在"
);
}
@Override
return
Result
.
success
(
items
.
get
(
0
));
public
Result
<?>
getEngineerSkillDetail
(
String
engineerCode
)
throws
BusinessException
{
}
// 获取工程师技能详情
List
<
EngineerInfo
>
engineers
=
this
.
queryEngineerInfos
(
engineerCode
);
@Transactional
if
(
engineers
.
isEmpty
())
{
@Override
throw
new
BusinessException
(
"技术员不存在"
);
public
Result
<?>
engineerSkillUpdate
(
String
engineerCode
,
List
<
String
>
categoryIds
)
{
}
// 更新技术员技能
List
<
EngineerSkillListResp
.
EngineerSkill
>
items
=
this
.
packEngineerSkills
(
engineers
);
if
(
items
.
isEmpty
())
{
// 先将所有技能更新为0-不可用状态
throw
new
BusinessException
(
"技术员不存在"
);
LambdaUpdateWrapper
<
EngineerSkill
>
wrapper
=
new
LambdaUpdateWrapper
<>();
}
wrapper
.
eq
(
EngineerSkill:
:
getEngineerCode
,
engineerCode
).
set
(
EngineerSkill:
:
getStatus
,
0
);
return
Result
.
success
(
items
.
get
(
0
));
engineerSkillMPDao
.
update
(
null
,
wrapper
);
}
if
(
categoryIds
.
isEmpty
())
{
return
null
;
@Transactional
}
@Override
public
Result
<?>
engineerSkillUpdate
(
String
engineerCode
,
List
<
String
>
categoryIds
)
{
// 更新categoryIds状态为1
// 更新技术员技能
wrapper
.
eq
(
EngineerSkill:
:
getEngineerCode
,
engineerCode
);
wrapper
.
in
(
EngineerSkill:
:
getCategoryId
,
categoryIds
);
// 先将所有技能更新为0-不可用状态
wrapper
.
set
(
EngineerSkill:
:
getStatus
,
1
);
LambdaUpdateWrapper
<
EngineerSkill
>
wrapper
=
new
LambdaUpdateWrapper
<>();
int
n
=
engineerSkillMPDao
.
update
(
null
,
wrapper
);
wrapper
.
eq
(
EngineerSkill:
:
getEngineerCode
,
engineerCode
).
set
(
EngineerSkill:
:
getStatus
,
0
);
if
(
categoryIds
.
size
()
==
n
)
{
engineerSkillMPDao
.
update
(
null
,
wrapper
);
// 更新记录条数等于提交记录条数
if
(
categoryIds
.
isEmpty
())
{
return
null
;
return
null
;
}
}
// 可能存在engineerSkill表不存在的记录,需要补充录入
// 更新categoryIds状态为1
List
<
Integer
>
statuses
=
new
ArrayList
<
Integer
>(
Arrays
.
asList
(
1
,
0
));
wrapper
.
eq
(
EngineerSkill:
:
getEngineerCode
,
engineerCode
);
List
<
String
>
engineerCodes
=
new
ArrayList
<>(
Collections
.
singletonList
(
engineerCode
));
wrapper
.
in
(
EngineerSkill:
:
getCategoryId
,
categoryIds
);
HashMap
<
String
,
List
<
String
>>
engineerSkills
=
this
.
queryEngineerSkills
(
engineerCodes
,
statuses
);
wrapper
.
set
(
EngineerSkill:
:
getStatus
,
1
);
int
n
=
engineerSkillMPDao
.
update
(
null
,
wrapper
);
Set
<
String
>
sInput
=
new
HashSet
<>(
categoryIds
);
if
(
categoryIds
.
size
()
==
n
)
{
Set
<
String
>
sDB
=
new
HashSet
<>(
engineerSkills
.
get
(
engineerCode
));
// 更新记录条数等于提交记录条数
sInput
.
removeAll
(
sDB
);
return
null
;
for
(
String
categoryId
:
sInput
)
{
}
EngineerSkill
e
=
new
EngineerSkill
();
e
.
setEngineerCode
(
engineerCode
);
// 可能存在engineerSkill表不存在的记录,需要补充录入
e
.
setCategoryId
(
categoryId
);
List
<
Integer
>
statuses
=
new
ArrayList
<
Integer
>(
Arrays
.
asList
(
1
,
0
));
e
.
setStatus
(
1
);
List
<
String
>
engineerCodes
=
new
ArrayList
<>(
Collections
.
singletonList
(
engineerCode
));
engineerSkillMPDao
.
insert
(
e
);
HashMap
<
String
,
List
<
String
>>
engineerSkills
=
this
.
queryEngineerSkills
(
engineerCodes
,
statuses
);
}
return
null
;
Set
<
String
>
sInput
=
new
HashSet
<>(
categoryIds
);
}
Set
<
String
>
sDB
=
new
HashSet
<>(
engineerSkills
.
get
(
engineerCode
));
sInput
.
removeAll
(
sDB
);
@Transactional
for
(
String
categoryId
:
sInput
)
{
@Override
EngineerSkill
e
=
new
EngineerSkill
();
public
Result
<?>
getEngineerBusinessList
(
long
page
,
long
size
)
{
e
.
setEngineerCode
(
engineerCode
);
// 技术员业务属性配置列表
e
.
setCategoryId
(
categoryId
);
e
.
setStatus
(
1
);
// 查询技术员列表
engineerSkillMPDao
.
insert
(
e
);
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfoIPage
(
page
,
size
);
}
List
<
EngineerInfo
>
engineers
=
pg
.
getRecords
();
return
null
;
}
// 查询技术员业务属性
EngineerBusinessListResp
res
=
new
EngineerBusinessListResp
();
@Transactional
res
.
setTotal
(
pg
.
getTotal
());
@Override
res
.
setPages
(
pg
.
getPages
());
public
Result
<?>
getEngineerBusinessList
(
long
page
,
long
size
)
{
res
.
setPageCurrent
(
pg
.
getCurrent
());
// 技术员业务属性配置列表
res
.
setPageSize
(
pg
.
getSize
());
res
.
setContent
(
this
.
packEngineerBusinesses
(
engineers
));
// 查询技术员列表
return
Result
.
success
(
res
);
IPage
<
EngineerInfo
>
pg
=
this
.
queryEngineerInfoIPage
(
page
,
size
);
}
List
<
EngineerInfo
>
engineers
=
pg
.
getRecords
();
@Override
// 查询技术员业务属性
public
Result
<?>
getEngineerBusinessDetail
(
String
engineerCode
)
{
EngineerBusinessListResp
res
=
new
EngineerBusinessListResp
();
// 获取技术员业务熟悉详情
res
.
setTotal
(
pg
.
getTotal
());
List
<
EngineerInfo
>
engineers
=
this
.
queryEngineerInfos
(
engineerCode
);
res
.
setPages
(
pg
.
getPages
());
if
(
engineers
.
isEmpty
())
{
res
.
setPageCurrent
(
pg
.
getCurrent
());
throw
new
BusinessException
(
"技术员不存在"
);
res
.
setPageSize
(
pg
.
getSize
());
}
res
.
setContent
(
this
.
packEngineerBusinesses
(
engineers
));
List
<?>
items
=
this
.
packEngineerBusinesses
(
engineers
);
return
Result
.
success
(
res
);
if
(
items
.
isEmpty
())
{
}
throw
new
BusinessException
(
"技术员不存在"
);
}
@Override
return
Result
.
success
(
items
.
get
(
0
));
public
Result
<?>
getEngineerBusinessDetail
(
String
engineerCode
)
{
}
// 获取技术员业务熟悉详情
List
<
EngineerInfo
>
engineers
=
this
.
queryEngineerInfos
(
engineerCode
);
@Transactional
if
(
engineers
.
isEmpty
())
{
@Override
throw
new
BusinessException
(
"技术员不存在"
);
public
Result
<?>
engineerBusinessUpdate
(
String
engineerCode
,
Integer
maxNum
,
Integer
maxMinute
,
String
departure
,
String
priority
)
{
}
// 技术员业务属性配置修改
List
<?>
items
=
this
.
packEngineerBusinesses
(
engineers
);
if
(
items
.
isEmpty
())
{
LambdaUpdateWrapper
<
EngineerBusiness
>
wrapper
=
new
LambdaUpdateWrapper
<>();
throw
new
BusinessException
(
"技术员不存在"
);
wrapper
.
eq
(
EngineerBusiness:
:
getEngineerCode
,
engineerCode
);
}
wrapper
.
set
(
maxNum
>=
0
,
EngineerBusiness:
:
getMaxNum
,
maxNum
);
return
Result
.
success
(
items
.
get
(
0
));
wrapper
.
set
(
maxMinute
>=
0
,
EngineerBusiness:
:
getMaxMinute
,
maxMinute
);
}
Integer
dep
=
(
departure
.
equals
(
"配件仓"
))
?
1
:
2
;
@Transactional
wrapper
.
set
(
EngineerBusiness:
:
getDeparture
,
dep
);
@Override
public
Result
<?>
engineerBusinessUpdate
(
String
engineerCode
,
Integer
maxNum
,
Integer
maxMinute
,
String
departure
,
String
priority
)
{
int
pri
;
// 技术员业务属性配置修改
if
(
priority
.
equals
(
"高"
))
{
pri
=
3
;
LambdaUpdateWrapper
<
EngineerBusiness
>
wrapper
=
new
LambdaUpdateWrapper
<>();
}
else
if
(
priority
.
equals
(
"中"
))
{
wrapper
.
eq
(
EngineerBusiness:
:
getEngineerCode
,
engineerCode
);
pri
=
2
;
wrapper
.
set
(
maxNum
>=
0
,
EngineerBusiness:
:
getMaxNum
,
maxNum
);
}
else
{
wrapper
.
set
(
maxMinute
>=
0
,
EngineerBusiness:
:
getMaxMinute
,
maxMinute
);
pri
=
1
;
}
Integer
dep
=
(
departure
.
equals
(
"配件仓"
))
?
1
:
2
;
wrapper
.
set
(
EngineerBusiness:
:
getPriority
,
pri
);
wrapper
.
set
(
EngineerBusiness:
:
getDeparture
,
dep
);
// 更新字段
int
pri
;
engineerBusinessDao
.
update
(
null
,
wrapper
);
if
(
priority
.
equals
(
"高"
))
{
pri
=
3
;
return
Result
.
success
(
null
);
}
else
if
(
priority
.
equals
(
"中"
))
{
}
pri
=
2
;
}
else
{
private
IPage
<
EngineerInfo
>
queryEngineerInfoIPage
(
long
page
,
long
size
)
{
pri
=
1
;
// 分页查询工程师基础信息
}
LambdaQueryWrapper
<
EngineerInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
wrapper
.
set
(
EngineerBusiness:
:
getPriority
,
pri
);
lqw
.
orderByAsc
(
EngineerInfo:
:
getGroupId
);
lqw
.
orderByAsc
(
EngineerInfo:
:
getEngineerCode
);
// 更新字段
engineerBusinessDao
.
update
(
null
,
wrapper
);
IPage
<
EngineerInfo
>
pg
=
new
Page
(
page
,
size
);
engineerInfoMPDao
.
selectPage
(
pg
,
lqw
);
return
Result
.
success
(
null
);
return
pg
;
}
}
private
IPage
<
EngineerInfo
>
queryEngineerInfoIPage
(
long
page
,
long
size
)
{
private
List
<
EngineerInfo
>
queryEngineerInfos
(
String
engineerCode
)
{
// 分页查询工程师基础信息
// 分页查询工程师基础信息
LambdaQueryWrapper
<
EngineerInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
EngineerInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
lqw
.
orderByAsc
(
EngineerInfo:
:
getGroupId
);
lqw
.
eq
(
EngineerInfo:
:
getEngineerCode
,
engineerCode
);
lqw
.
orderByAsc
(
EngineerInfo:
:
getEngineerCode
);
return
engineerInfoMPDao
.
selectList
(
lqw
);
}
IPage
<
EngineerInfo
>
pg
=
new
Page
(
page
,
size
);
engineerInfoMPDao
.
selectPage
(
pg
,
lqw
);
private
HashMap
<
String
,
String
>
queryGroupNames
(
List
<
String
>
groupIds
)
{
return
pg
;
//查询小组名称映射关系
}
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
private
List
<
EngineerInfo
>
queryEngineerInfos
(
String
engineerCode
)
{
if
(
groupIds
.
isEmpty
())
{
// 分页查询工程师基础信息
return
map
;
LambdaQueryWrapper
<
EngineerInfo
>
lqw
=
new
LambdaQueryWrapper
<>();
}
lqw
.
eq
(
EngineerInfo:
:
getEngineerCode
,
engineerCode
);
LambdaQueryWrapper
<
OrgGroup
>
lqw
=
new
LambdaQueryWrapper
<>();
return
engineerInfoMPDao
.
selectList
(
lqw
);
lqw
.
select
(
OrgGroup:
:
getGroupId
,
OrgGroup:
:
getGroupName
);
}
lqw
.
in
(
OrgGroup:
:
getGroupId
,
groupIds
);
List
<
OrgGroup
>
groups
=
orgGroupMPDao
.
selectList
(
lqw
);
private
HashMap
<
String
,
String
>
queryGroupNames
(
List
<
String
>
groupIds
)
{
for
(
OrgGroup
g
:
groups
)
{
//查询小组名称映射关系
map
.
put
(
g
.
getGroupId
(),
g
.
getGroupName
());
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
}
return
map
;
if
(
groupIds
.
isEmpty
())
{
}
return
map
;
}
private
HashMap
<
String
,
List
<
String
>>
queryEngineerSkills
(
List
<
String
>
engineerCodes
,
List
<
Integer
>
statuses
)
{
LambdaQueryWrapper
<
OrgGroup
>
lqw
=
new
LambdaQueryWrapper
<>();
// 获取engineerCode对应的技能表, HashMap<engineerCode, List<skillId>>
lqw
.
select
(
OrgGroup:
:
getGroupId
,
OrgGroup:
:
getGroupName
);
lqw
.
in
(
OrgGroup:
:
getGroupId
,
groupIds
);
HashMap
<
String
,
List
<
String
>>
map
=
new
HashMap
<>();
List
<
OrgGroup
>
groups
=
orgGroupMPDao
.
selectList
(
lqw
);
if
(
engineerCodes
.
isEmpty
())
{
for
(
OrgGroup
g
:
groups
)
{
return
map
;
map
.
put
(
g
.
getGroupId
(),
g
.
getGroupName
());
}
}
LambdaQueryWrapper
<
EngineerSkill
>
lqw
=
new
LambdaQueryWrapper
<>();
return
map
;
lqw
.
in
(
EngineerSkill:
:
getEngineerCode
,
engineerCodes
);
}
lqw
.
in
(
EngineerSkill:
:
getStatus
,
statuses
);
List
<
EngineerSkill
>
records
=
engineerSkillMPDao
.
selectList
(
lqw
);
private
HashMap
<
String
,
List
<
String
>>
queryEngineerSkills
(
List
<
String
>
engineerCodes
,
List
<
Integer
>
statuses
)
{
// 获取engineerCode对应的技能表, HashMap<engineerCode, List<skillId>>
Comparator
<
EngineerSkill
>
ec
=
Comparator
.
comparing
(
EngineerSkill:
:
getEngineerCode
,
String
.
CASE_INSENSITIVE_ORDER
);
List
<
EngineerSkill
>
results
=
records
.
stream
().
sorted
(
ec
).
collect
(
Collectors
.
toList
());
HashMap
<
String
,
List
<
String
>>
map
=
new
HashMap
<>();
if
(
engineerCodes
.
isEmpty
())
{
// 根据engineerCode分组
return
map
;
Map
<
String
,
List
<
EngineerSkill
>>
g
=
results
.
stream
().
collect
(
Collectors
.
groupingBy
(
EngineerSkill:
:
getEngineerCode
));
}
LambdaQueryWrapper
<
EngineerSkill
>
lqw
=
new
LambdaQueryWrapper
<>();
for
(
String
engineerCode
:
g
.
keySet
())
{
lqw
.
in
(
EngineerSkill:
:
getEngineerCode
,
engineerCodes
);
// 技术员技能ID列表
lqw
.
in
(
EngineerSkill:
:
getStatus
,
statuses
);
List
<
String
>
skillIds
=
g
.
get
(
engineerCode
).
stream
().
map
(
EngineerSkill:
:
getCategoryId
).
collect
(
Collectors
.
toList
());
List
<
EngineerSkill
>
records
=
engineerSkillMPDao
.
selectList
(
lqw
);
map
.
put
(
engineerCode
,
skillIds
);
}
Comparator
<
EngineerSkill
>
ec
=
Comparator
.
comparing
(
EngineerSkill:
:
getEngineerCode
,
String
.
CASE_INSENSITIVE_ORDER
);
return
map
;
List
<
EngineerSkill
>
results
=
records
.
stream
().
sorted
(
ec
).
collect
(
Collectors
.
toList
());
}
// 根据engineerCode分组
private
HashMap
<
String
,
EngineerBusiness
>
queryEngineerBusiness
(
List
<
String
>
engineerCodes
)
{
Map
<
String
,
List
<
EngineerSkill
>>
g
=
results
.
stream
().
collect
(
Collectors
.
groupingBy
(
EngineerSkill:
:
getEngineerCode
));
HashMap
<
String
,
EngineerBusiness
>
map
=
new
HashMap
<>();
if
(
engineerCodes
.
isEmpty
())
{
for
(
String
engineerCode
:
g
.
keySet
())
{
return
map
;
// 技术员技能ID列表
}
List
<
String
>
skillIds
=
g
.
get
(
engineerCode
).
stream
().
map
(
EngineerSkill:
:
getCategoryId
).
collect
(
Collectors
.
toList
());
LambdaQueryWrapper
<
EngineerBusiness
>
lqw
=
new
LambdaQueryWrapper
<>();
map
.
put
(
engineerCode
,
skillIds
);
lqw
.
in
(
EngineerBusiness:
:
getEngineerCode
,
engineerCodes
);
}
List
<
EngineerBusiness
>
records
=
engineerBusinessDao
.
selectList
(
lqw
);
return
map
;
for
(
EngineerBusiness
r
:
records
)
{
}
map
.
put
(
r
.
getEngineerCode
(),
r
);
}
private
HashMap
<
String
,
EngineerBusiness
>
queryEngineerBusiness
(
List
<
String
>
engineerCodes
)
{
return
map
;
HashMap
<
String
,
EngineerBusiness
>
map
=
new
HashMap
<>();
}
if
(
engineerCodes
.
isEmpty
())
{
return
map
;
private
List
<
EngineerInfoListResp
.
EngineerInfo
>
packEngineerInfos
(
List
<
EngineerInfo
>
engineers
,
HashMap
<
String
,
String
>
groups
)
{
}
LambdaQueryWrapper
<
EngineerBusiness
>
lqw
=
new
LambdaQueryWrapper
<>();
String
groupName
,
age
,
kind
;
lqw
.
in
(
EngineerBusiness:
:
getEngineerCode
,
engineerCodes
);
List
<
EngineerBusiness
>
records
=
engineerBusinessDao
.
selectList
(
lqw
);
List
<
EngineerInfoListResp
.
EngineerInfo
>
items
=
new
ArrayList
<>();
for
(
EngineerBusiness
r
:
records
)
{
for
(
EngineerInfo
e
:
engineers
)
{
map
.
put
(
r
.
getEngineerCode
(),
r
);
EngineerInfoListResp
.
EngineerInfo
item
=
new
EngineerInfoListResp
.
EngineerInfo
();
}
item
.
setEngineerCode
(
e
.
getEngineerCode
());
return
map
;
item
.
setNumber
(
e
.
getEngineerCode
());
}
item
.
setName
(
e
.
getName
());
item
.
setSex
(
e
.
getGender
());
private
List
<
EngineerInfoListResp
.
EngineerInfo
>
packEngineerInfos
(
List
<
EngineerInfo
>
engineers
,
HashMap
<
String
,
String
>
groups
)
{
item
.
setPhone
(
e
.
getPhone
());
item
.
setAddress
(
e
.
getAddress
());
String
groupName
,
age
,
kind
;
item
.
setGrade
(
e
.
getGrade
());
List
<
EngineerInfoListResp
.
EngineerInfo
>
items
=
new
ArrayList
<>();
// group name
for
(
EngineerInfo
e
:
engineers
)
{
groupName
=
groups
.
getOrDefault
(
e
.
getGroupId
(),
""
);
EngineerInfoListResp
.
EngineerInfo
item
=
new
EngineerInfoListResp
.
EngineerInfo
();
item
.
setGroupName
(
groupName
);
item
.
setEngineerCode
(
e
.
getEngineerCode
());
item
.
setNumber
(
e
.
getEngineerCode
());
// 年龄
item
.
setName
(
e
.
getName
());
age
=
this
.
getEngineerAge
(
e
.
getBirth
());
item
.
setSex
(
e
.
getGender
());
item
.
setAge
(
age
);
item
.
setPhone
(
e
.
getPhone
());
item
.
setAddress
(
e
.
getAddress
());
// 工作类型:全职/兼职
item
.
setGrade
(
e
.
getGrade
());
kind
=
(
e
.
getKind
()
==
1
)
?
"fullJob"
:
"partJob"
;
item
.
setKind
(
kind
);
// group name
groupName
=
groups
.
getOrDefault
(
e
.
getGroupId
(),
""
);
if
(
e
.
getCredentials
()
!=
null
)
{
item
.
setGroupName
(
groupName
);
item
.
setCredentials
(
Arrays
.
asList
(
e
.
getCredentials
().
split
(
"、"
)));
}
else
{
// 年龄
item
.
setCredentials
(
new
ArrayList
<
String
>());
age
=
this
.
getEngineerAge
(
e
.
getBirth
());
}
item
.
setAge
(
age
);
// 标签
// 工作类型:全职/兼职
List
<
String
>
tags
=
new
ArrayList
<>();
kind
=
(
e
.
getKind
()
==
1
)
?
"fullJob"
:
"partJob"
;
if
(
e
.
getTags
()
!=
null
&&
!
e
.
getTags
().
isEmpty
())
{
item
.
setKind
(
kind
);
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
e
.
getTags
().
entrySet
())
{
tags
.
add
(
String
.
format
(
"%s+%s"
,
entry
.
getKey
(),
entry
.
getValue
().
toString
()));
if
(
e
.
getCredentials
()
!=
null
)
{
}
item
.
setCredentials
(
Arrays
.
asList
(
e
.
getCredentials
().
split
(
"、"
)));
}
}
else
{
item
.
setTags
(
tags
);
item
.
setCredentials
(
new
ArrayList
<
String
>());
}
items
.
add
(
item
);
}
// 标签
return
items
;
List
<
String
>
tags
=
new
ArrayList
<>();
}
if
(
e
.
getTags
()
!=
null
&&
!
e
.
getTags
().
isEmpty
())
{
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
e
.
getTags
().
entrySet
())
{
private
List
<
EngineerSkillListResp
.
EngineerSkill
>
packEngineerSkills
(
List
<
EngineerInfo
>
engineers
)
{
tags
.
add
(
String
.
format
(
"%s+%s"
,
entry
.
getKey
(),
entry
.
getValue
().
toString
()));
// 获取groupId类表
}
List
<
String
>
groupIds
=
engineers
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
}
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
item
.
setTags
(
tags
);
// 获取技术员code列表
items
.
add
(
item
);
List
<
String
>
engineerCodes
=
engineers
.
stream
().
map
(
EngineerInfo:
:
getEngineerCode
).
collect
(
Collectors
.
toList
());
}
return
items
;
// 获取技术员的可用技能列表
}
List
<
Integer
>
statuses
=
new
ArrayList
<
Integer
>(
List
.
of
(
1
));
HashMap
<
String
,
List
<
String
>>
engineerSkills
=
this
.
queryEngineerSkills
(
engineerCodes
,
statuses
);
private
List
<
EngineerSkillListResp
.
EngineerSkill
>
packEngineerSkills
(
List
<
EngineerInfo
>
engineers
)
{
List
<
String
>
emptySkills
=
Collections
.
emptyList
();
// 获取groupId类表
List
<
String
>
groupIds
=
engineers
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
List
<
EngineerSkillListResp
.
EngineerSkill
>
items
=
new
ArrayList
<>();
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
for
(
EngineerInfo
e
:
engineers
)
{
EngineerSkillListResp
.
EngineerSkill
skill
=
new
EngineerSkillListResp
.
EngineerSkill
();
// 获取技术员code列表
skill
.
setEngineerCode
(
e
.
getEngineerCode
());
List
<
String
>
engineerCodes
=
engineers
.
stream
().
map
(
EngineerInfo:
:
getEngineerCode
).
collect
(
Collectors
.
toList
());
skill
.
setEngineerName
(
e
.
getName
());
skill
.
setGroupName
(
groupNames
.
getOrDefault
(
e
.
getGroupId
(),
""
));
// 获取技术员的可用技能列表
skill
.
setUpdateTime
(
this
.
Timestamp2Datetime
(
e
.
getUpdateTime
(),
"yyyy-MM-dd hh:mm:ss"
));
List
<
Integer
>
statuses
=
new
ArrayList
<
Integer
>(
List
.
of
(
1
));
HashMap
<
String
,
List
<
String
>>
engineerSkills
=
this
.
queryEngineerSkills
(
engineerCodes
,
statuses
);
// 获取一个工程师的技能列表
List
<
String
>
emptySkills
=
Collections
.
emptyList
();
skill
.
setCategoryIds
(
engineerSkills
.
getOrDefault
(
e
.
getEngineerCode
(),
emptySkills
));
List
<
EngineerSkillListResp
.
EngineerSkill
>
items
=
new
ArrayList
<>();
items
.
add
(
skill
);
for
(
EngineerInfo
e
:
engineers
)
{
}
EngineerSkillListResp
.
EngineerSkill
skill
=
new
EngineerSkillListResp
.
EngineerSkill
();
return
items
;
skill
.
setEngineerCode
(
e
.
getEngineerCode
());
}
skill
.
setEngineerName
(
e
.
getName
());
skill
.
setGroupName
(
groupNames
.
getOrDefault
(
e
.
getGroupId
(),
""
));
private
List
<
EngineerBusinessListResp
.
EngineerBusiness
>
packEngineerBusinesses
(
List
<
EngineerInfo
>
engineers
)
{
skill
.
setUpdateTime
(
this
.
Timestamp2Datetime
(
e
.
getUpdateTime
(),
"yyyy-MM-dd hh:mm:ss"
));
// 获取技术员code列表
List
<
String
>
engineerCodes
=
engineers
.
stream
().
map
(
EngineerInfo:
:
getEngineerCode
).
collect
(
Collectors
.
toList
());
// 获取一个工程师的技能列表
skill
.
setCategoryIds
(
engineerSkills
.
getOrDefault
(
e
.
getEngineerCode
(),
emptySkills
));
List
<
String
>
groupIds
=
engineers
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
items
.
add
(
skill
);
}
HashMap
<
String
,
EngineerBusiness
>
buss
=
this
.
queryEngineerBusiness
(
engineerCodes
);
return
items
;
}
List
<
EngineerBusinessListResp
.
EngineerBusiness
>
items
=
new
ArrayList
<>();
for
(
EngineerInfo
e
:
engineers
)
{
private
List
<
EngineerBusinessListResp
.
EngineerBusiness
>
packEngineerBusinesses
(
List
<
EngineerInfo
>
engineers
)
{
EngineerBusinessListResp
.
EngineerBusiness
item
=
new
EngineerBusinessListResp
.
EngineerBusiness
();
// 获取技术员code列表
List
<
String
>
engineerCodes
=
engineers
.
stream
().
map
(
EngineerInfo:
:
getEngineerCode
).
collect
(
Collectors
.
toList
());
item
.
setEngineerCode
(
e
.
getEngineerCode
());
item
.
setGroupName
(
groupNames
.
getOrDefault
(
e
.
getGroupId
(),
""
));
List
<
String
>
groupIds
=
engineers
.
stream
().
map
(
EngineerInfo:
:
getGroupId
).
collect
(
Collectors
.
toList
());
item
.
setEngineerName
(
e
.
getName
());
HashMap
<
String
,
String
>
groupNames
=
this
.
queryGroupNames
(
groupIds
);
item
.
setKind
((
e
.
getKind
()
==
1
)
?
"fullJob"
:
"partJob"
);
HashMap
<
String
,
EngineerBusiness
>
buss
=
this
.
queryEngineerBusiness
(
engineerCodes
);
EngineerBusiness
b
=
buss
.
getOrDefault
(
e
.
getEngineerCode
(),
null
);
if
(
b
==
null
)
{
List
<
EngineerBusinessListResp
.
EngineerBusiness
>
items
=
new
ArrayList
<>();
item
.
setAddress
(
""
);
for
(
EngineerInfo
e
:
engineers
)
{
item
.
setLocation
(
""
);
EngineerBusinessListResp
.
EngineerBusiness
item
=
new
EngineerBusinessListResp
.
EngineerBusiness
();
item
.
setDeparture
(
""
);
item
.
setMaxMinute
(
0
);
item
.
setEngineerCode
(
e
.
getEngineerCode
());
item
.
setMaxNum
(
0
);
item
.
setGroupName
(
groupNames
.
getOrDefault
(
e
.
getGroupId
(),
""
));
item
.
setPriority
(
"低"
);
item
.
setEngineerName
(
e
.
getName
());
}
else
{
item
.
setKind
((
e
.
getKind
()
==
1
)
?
"fullJob"
:
"partJob"
);
item
.
setAddress
(
b
.
getAddress
());
item
.
setLocation
(
String
.
format
(
"%s,%s"
,
b
.
getX
(),
b
.
getY
()));
EngineerBusiness
b
=
buss
.
getOrDefault
(
e
.
getEngineerCode
(),
null
);
item
.
setDeparture
((
b
.
getDeparture
()
==
1
)
?
"配件仓"
:
"住址"
);
if
(
b
==
null
)
{
item
.
setMaxMinute
(
b
.
getMaxMinute
());
item
.
setAddress
(
""
);
item
.
setMaxNum
(
b
.
getMaxNum
());
item
.
setLocation
(
""
);
item
.
setDeparture
(
""
);
String
priority
;
item
.
setMaxMinute
(
0
);
if
(
b
.
getPriority
()
==
3
)
{
item
.
setMaxNum
(
0
);
priority
=
"高"
;
item
.
setPriority
(
"低"
);
}
else
if
(
b
.
getPriority
()
==
2
)
{
}
else
{
priority
=
"中"
;
item
.
setAddress
(
b
.
getAddress
());
}
else
{
item
.
setLocation
(
String
.
format
(
"%s,%s"
,
b
.
getX
(),
b
.
getY
()));
priority
=
"低"
;
item
.
setDeparture
((
b
.
getDeparture
()
==
1
)
?
"配件仓"
:
"住址"
);
}
item
.
setMaxMinute
(
b
.
getMaxMinute
());
item
.
setPriority
(
priority
);
item
.
setMaxNum
(
b
.
getMaxNum
());
}
items
.
add
(
item
);
String
priority
;
}
if
(
b
.
getPriority
()
==
3
)
{
return
items
;
priority
=
"高"
;
}
}
else
if
(
b
.
getPriority
()
==
2
)
{
priority
=
"中"
;
}
else
{
private
HashMap
<
String
,
Integer
>
getEngineerSkillIds
(
List
<
String
>
skillIds
,
HashMap
<
String
,
Integer
>
engineerSkillIds
)
{
priority
=
"低"
;
HashMap
<
String
,
Integer
>
map
=
new
HashMap
<>();
}
for
(
String
skillId
:
skillIds
)
{
item
.
setPriority
(
priority
);
map
.
put
(
skillId
,
engineerSkillIds
.
getOrDefault
(
skillId
,
0
));
}
}
items
.
add
(
item
);
return
map
;
}
}
return
items
;
}
private
String
getEngineerAge
(
String
birth
)
{
// 获取工程师年龄
if
(
birth
.
isEmpty
())
{
private
HashMap
<
String
,
Integer
>
getEngineerSkillIds
(
List
<
String
>
skillIds
,
HashMap
<
String
,
Integer
>
engineerSkillIds
)
{
return
""
;
HashMap
<
String
,
Integer
>
map
=
new
HashMap
<>();
}
for
(
String
skillId
:
skillIds
)
{
int
age
;
map
.
put
(
skillId
,
engineerSkillIds
.
getOrDefault
(
skillId
,
0
));
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
}
try
{
return
map
;
Date
birthDate
=
dateFormat
.
parse
(
birth
);
}
Calendar
birthCalendar
=
Calendar
.
getInstance
();
birthCalendar
.
setTime
(
birthDate
);
private
String
getEngineerAge
(
String
birth
)
{
Calendar
nowCalendar
=
Calendar
.
getInstance
();
// 获取工程师年龄
age
=
nowCalendar
.
get
(
Calendar
.
YEAR
)
-
birthCalendar
.
get
(
Calendar
.
YEAR
);
if
(
birth
.
isEmpty
())
{
if
(
nowCalendar
.
get
(
Calendar
.
DAY_OF_YEAR
)
<
birthCalendar
.
get
(
Calendar
.
DAY_OF_YEAR
))
{
return
""
;
age
--;
}
}
int
age
;
}
catch
(
Exception
e
)
{
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
return
""
;
try
{
}
Date
birthDate
=
dateFormat
.
parse
(
birth
);
return
(
age
<=
0
)
?
""
:
Integer
.
toString
(
age
);
Calendar
birthCalendar
=
Calendar
.
getInstance
();
}
birthCalendar
.
setTime
(
birthDate
);
Calendar
nowCalendar
=
Calendar
.
getInstance
();
private
String
Timestamp2Datetime
(
Timestamp
t
,
String
pattern
)
{
age
=
nowCalendar
.
get
(
Calendar
.
YEAR
)
-
birthCalendar
.
get
(
Calendar
.
YEAR
);
DateTimeFormatter
df
=
DateTimeFormatter
.
ofPattern
(
pattern
);
if
(
nowCalendar
.
get
(
Calendar
.
DAY_OF_YEAR
)
<
birthCalendar
.
get
(
Calendar
.
DAY_OF_YEAR
))
{
return
df
.
format
(
t
.
toLocalDateTime
());
age
--;
}
}
}
catch
(
Exception
e
)
{
return
""
;
}
return
(
age
<=
0
)
?
""
:
Integer
.
toString
(
age
);
}
private
String
Timestamp2Datetime
(
Timestamp
t
,
String
pattern
)
{
DateTimeFormatter
df
=
DateTimeFormatter
.
ofPattern
(
pattern
);
return
df
.
format
(
t
.
toLocalDateTime
());
}
@Override
public
Result
<?>
getEngineersGanttList
(
EngineersGanttReqDTO
reqDTO
)
{
// 按日期返回技术员们当天的服务甘特图,不需要翻页
log
.
info
(
"getEngineersGanttList: {}"
,
reqDTO
);
List
<
OrderAppointmentEntity
>
orderAppointments
=
orderAppointmentDao
.
findByDateAndEngineerCodeIn
(
reqDTO
.
getDate
(),
reqDTO
.
getEngineerCodes
());
List
<
String
>
orderIds
=
orderAppointments
.
stream
().
map
(
OrderAppointmentEntity:
:
getOrderId
).
collect
(
Collectors
.
toList
());
Map
<
String
,
OrderRequestEntity
>
mapOrderRequest
=
getOrdersByOrderIds
(
orderIds
);
HashMap
<
String
,
List
<
EngineersGanttRespDTO
.
Order
>>
mapEngineers
=
new
HashMap
<>();
for
(
OrderAppointmentEntity
e
:
orderAppointments
)
{
log
.
info
(
"===== order_id: [{}]"
,
e
.
getOrderId
());
EngineersGanttRespDTO
.
Order
order
=
new
EngineersGanttRespDTO
.
Order
();
// todo 需要根据订单时间和状态,采用expectXXXX或者actualXXXX
order
.
setStartTime
(
e
.
getExpectStartTime
()).
setEndTime
(
e
.
getExpectEndTime
());
order
.
setOrderId
(
e
.
getOrderId
()).
setPreStatus
(
e
.
getPreStatus
());
order
.
setTips
(
getOrderTips
(
e
.
getOrderId
()));
order
.
setAppointmentStatus
(
mapOrderRequest
.
get
(
e
.
getOrderId
()).
getAppointmentStatus
());
List
<
EngineersGanttRespDTO
.
Order
>
orders
=
null
;
if
(
mapEngineers
.
containsKey
(
e
.
getEngineerCode
()))
{
orders
=
mapEngineers
.
get
(
e
.
getEngineerCode
());
}
else
{
orders
=
new
ArrayList
<>();
}
orders
.
add
(
order
);
mapEngineers
.
put
(
e
.
getEngineerCode
(),
orders
);
}
List
<
EngineersGanttRespDTO
.
GanttChart
>
engineers
=
new
ArrayList
<>();
for
(
String
engineerCode
:
mapEngineers
.
keySet
())
{
EngineerInfoEntity
engineerInfo
=
engineerInfoDao
.
getByEngineerCode
(
engineerCode
);
EngineersGanttRespDTO
.
GanttChart
engineer
=
new
EngineersGanttRespDTO
.
GanttChart
();
engineer
.
setEngineerCode
(
engineerCode
)
.
setStartTime
(
String
.
format
(
"%s 08:00"
,
reqDTO
.
getDate
()))
.
setEndTime
(
String
.
format
(
"%s 18:00"
,
reqDTO
.
getDate
()))
.
setHoliday
(
false
)
// todo
.
setOrders
(
mapEngineers
.
get
(
engineerCode
))
.
setEngineerName
(
engineerInfo
.
getName
())
.
setGrade
(
engineerInfo
.
getGrade
());
CapacityEngineerStatEntity
capacityEngineerStat
=
capacityEngineerStatDao
.
getByEngineerCodeAndWorkday
(
engineerCode
,
reqDTO
.
getDate
());
if
(
capacityEngineerStat
==
null
)
{
log
.
warn
(
"技术员当日的容量数据不存在,{}{}"
,
engineerCode
,
reqDTO
.
getDate
());
}
else
{
engineer
.
setCapTotal
(
capacityEngineerStat
.
getCapTotal
().
toString
()).
setCapUsed
(
capacityEngineerStat
.
getCapUsed
().
toString
());
}
// engineer.setErrorTip(); todo
engineers
.
add
(
engineer
);
}
EngineersGanttRespDTO
data
=
new
EngineersGanttRespDTO
().
setDate
(
reqDTO
.
getDate
()).
setEngineers
(
engineers
);
return
Result
.
success
(
data
);
}
public
Map
<
String
,
OrderRequestEntity
>
getOrdersByOrderIds
(
List
<
String
>
orderIds
)
{
List
<
OrderRequestEntity
>
orders
=
orderRequestDao
.
findAllByOrderIdIn
(
orderIds
);
return
orders
.
stream
()
.
collect
(
Collectors
.
toMap
(
OrderRequestEntity:
:
getOrderId
,
order
->
order
));
}
private
List
<?>
getOrderTips
(
String
orderId
)
{
log
.
info
(
"==> getOrderTips: orderId[{}]"
,
orderId
);
OrderRequestEntity
order
=
orderRequestDao
.
getByOrderId
(
orderId
);
if
(
order
==
null
)
{
log
.
error
(
"对应的订单不存在!{}"
,
orderId
);
return
null
;
}
List
<
LabelValueDTO
>
tips
=
new
ArrayList
<>();
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"工单号码"
).
setValue
(
orderId
));
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"类型/品牌"
).
setValue
(
String
.
format
(
"%s %s"
,
order
.
getBrand
(),
order
.
getType
())));
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"电话/地址"
).
setValue
(
String
.
format
(
"%s %s\n %s"
,
order
.
getName
(),
order
.
getPhone
(),
order
.
getAddress
())));
if
(
StringUtils
.
isNotBlank
(
order
.
getApplyNote
()))
{
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"备注"
).
setValue
(
order
.
getApplyNote
()));
}
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"标签"
).
setValue
(
order
.
getTags
()));
return
tips
;
}
}
}
project-order/src/main/java/com/dituhui/pea/order/service/impl/WorkbenchServiceImpl.java
View file @
33b7121
...
@@ -2,22 +2,20 @@ package com.dituhui.pea.order.service.impl;
...
@@ -2,22 +2,20 @@ package com.dituhui.pea.order.service.impl;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dao.*
;
import
com.dituhui.pea.order.dao.*
;
import
com.dituhui.pea.order.dto.*
;
import
com.dituhui.pea.order.dto.OrderChangeListReqDTO
;
import
com.dituhui.pea.order.entity.*
;
import
com.dituhui.pea.order.dto.OrderChangeListRespDTO
;
import
com.dituhui.pea.order.entity.OrderChangeEntity
;
import
com.dituhui.pea.order.entity.OrderRequestEntity
;
import
com.dituhui.pea.order.service.WorkbenchService
;
import
com.dituhui.pea.order.service.WorkbenchService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.stereotype.Service
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Slf4j
@Slf4j
@Service
@Service
...
@@ -71,80 +69,4 @@ public class WorkbenchServiceImpl implements WorkbenchService {
...
@@ -71,80 +69,4 @@ public class WorkbenchServiceImpl implements WorkbenchService {
.
setContent
(
contents
);
.
setContent
(
contents
);
return
Result
.
success
(
respDTO
);
return
Result
.
success
(
respDTO
);
}
}
@Override
public
Result
<?>
getEngineersGanttList
(
EngineersGanttReqDTO
reqDTO
)
{
// 按日期返回技术员们当天的服务甘特图,不需要翻页
log
.
info
(
"getEngineersGanttList: {}"
,
reqDTO
);
List
<
OrderAppointmentEntity
>
orderAppointments
=
orderAppointmentDao
.
findByDateAndEngineerCodeIn
(
reqDTO
.
getDate
(),
reqDTO
.
getEngineerCodes
());
List
<
String
>
orderIds
=
orderAppointments
.
stream
().
map
(
OrderAppointmentEntity:
:
getOrderId
).
collect
(
Collectors
.
toList
());
Map
<
String
,
OrderRequestEntity
>
mapOrderRequest
=
getOrdersByOrderIds
(
orderIds
);
HashMap
<
String
,
List
<
EngineersGanttRespDTO
.
Order
>>
mapEngineers
=
new
HashMap
<>();
for
(
OrderAppointmentEntity
e
:
orderAppointments
)
{
log
.
info
(
"===== order_id: [{}]"
,
e
.
getOrderId
());
EngineersGanttRespDTO
.
Order
order
=
new
EngineersGanttRespDTO
.
Order
();
// todo 需要根据订单时间和状态,采用expectXXXX或者actualXXXX
order
.
setStartTime
(
e
.
getExpectStartTime
()).
setEndTime
(
e
.
getExpectEndTime
());
order
.
setOrderId
(
e
.
getOrderId
()).
setPreStatus
(
e
.
getPreStatus
());
order
.
setTips
(
getOrderTips
(
e
.
getOrderId
()));
order
.
setAppointmentStatus
(
mapOrderRequest
.
get
(
e
.
getOrderId
()).
getAppointmentStatus
());
List
<
EngineersGanttRespDTO
.
Order
>
orders
=
null
;
if
(
mapEngineers
.
containsKey
(
e
.
getEngineerCode
()))
{
orders
=
mapEngineers
.
get
(
e
.
getEngineerCode
());
}
else
{
orders
=
new
ArrayList
<>();
}
orders
.
add
(
order
);
mapEngineers
.
put
(
e
.
getEngineerCode
(),
orders
);
}
List
<
EngineersGanttRespDTO
.
GanttChart
>
engineers
=
new
ArrayList
<>();
for
(
String
engineerCode
:
mapEngineers
.
keySet
())
{
EngineerInfoEntity
engineerInfo
=
engineerInfoDao
.
getByEngineerCode
(
engineerCode
);
EngineersGanttRespDTO
.
GanttChart
engineer
=
new
EngineersGanttRespDTO
.
GanttChart
();
engineer
.
setEngineerCode
(
engineerCode
)
.
setStartTime
(
String
.
format
(
"%s 08:00"
,
reqDTO
.
getDate
()))
.
setEndTime
(
String
.
format
(
"%s 18:00"
,
reqDTO
.
getDate
()))
.
setHoliday
(
false
)
// todo
.
setOrders
(
mapEngineers
.
get
(
engineerCode
))
.
setEngineerName
(
engineerInfo
.
getName
())
.
setGrade
(
engineerInfo
.
getGrade
());
CapacityEngineerStatEntity
capacityEngineerStat
=
capacityEngineerStatDao
.
getByEngineerCodeAndWorkday
(
engineerCode
,
reqDTO
.
getDate
());
if
(
capacityEngineerStat
==
null
)
{
log
.
warn
(
"技术员当日的容量数据不存在,{}{}"
,
engineerCode
,
reqDTO
.
getDate
());
}
else
{
engineer
.
setCapTotal
(
capacityEngineerStat
.
getCapTotal
().
toString
()).
setCapUsed
(
capacityEngineerStat
.
getCapUsed
().
toString
());
}
// engineer.setErrorTip(); todo
engineers
.
add
(
engineer
);
}
EngineersGanttRespDTO
data
=
new
EngineersGanttRespDTO
().
setDate
(
reqDTO
.
getDate
()).
setEngineers
(
engineers
);
return
Result
.
success
(
data
);
}
public
Map
<
String
,
OrderRequestEntity
>
getOrdersByOrderIds
(
List
<
String
>
orderIds
)
{
List
<
OrderRequestEntity
>
orders
=
orderRequestDao
.
findAllByOrderIdIn
(
orderIds
);
return
orders
.
stream
()
.
collect
(
Collectors
.
toMap
(
OrderRequestEntity:
:
getOrderId
,
order
->
order
));
}
private
List
<?>
getOrderTips
(
String
orderId
)
{
log
.
info
(
"==> getOrderTips: orderId[{}]"
,
orderId
);
OrderRequestEntity
order
=
orderRequestDao
.
getByOrderId
(
orderId
);
if
(
order
==
null
)
{
log
.
error
(
"对应的订单不存在!{}"
,
orderId
);
return
null
;
}
List
<
LabelValueDTO
>
tips
=
new
ArrayList
<>();
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"工单号码"
).
setValue
(
orderId
));
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"类型/品牌"
).
setValue
(
String
.
format
(
"%s %s"
,
order
.
getBrand
(),
order
.
getType
())));
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"电话/地址"
).
setValue
(
String
.
format
(
"%s %s\n %s"
,
order
.
getName
(),
order
.
getPhone
(),
order
.
getAddress
())));
if
(
StringUtils
.
isNotBlank
(
order
.
getApplyNote
()))
{
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"备注"
).
setValue
(
order
.
getApplyNote
()));
}
tips
.
add
(
new
LabelValueDTO
().
setLabel
(
"标签"
).
setValue
(
order
.
getTags
()));
return
tips
;
}
}
}
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