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 98763974
authored
Jul 11, 2023
by
丁伟峰
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-dingwf-0715' into develop
2 parents
1bf0d372
79e41ac3
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
92 additions
and
50 deletions
project-order/src/main/java/com/dituhui/pea/order/common/EngineerUtil.java
project-order/src/main/java/com/dituhui/pea/order/controller/EngineerController.java
project-order/src/main/java/com/dituhui/pea/order/dao/EngineerInfoDao.java
project-order/src/main/java/com/dituhui/pea/order/dto/EngineersGanttRespDTO.java → project-order/src/main/java/com/dituhui/pea/order/dto/EngineersGanttDTO.java
project-order/src/main/java/com/dituhui/pea/order/dto/EngineersGanttReqDTO.java
project-order/src/main/java/com/dituhui/pea/order/service/EngineerGanttService.java
project-order/src/main/java/com/dituhui/pea/order/service/EngineerService.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerCalendarServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerGanttServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/OrganizationServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/common/EngineerUtil.java
View file @
9876397
...
...
@@ -33,7 +33,7 @@ public class EngineerUtil {
@Autowired
private
OrgGroupDao
orgGroupDao
;
public
List
<
EngineerInfoEntity
>
getEngineesByLevel
(
String
levelType
,
String
levelValue
)
{
public
List
<
EngineerInfoEntity
>
getEnginee
r
sByLevel
(
String
levelType
,
String
levelValue
)
{
List
<
EngineerInfoEntity
>
engineers
=
null
;
List
<
String
>
groupIds
=
null
;
switch
(
levelType
)
{
...
...
@@ -61,11 +61,15 @@ public class EngineerUtil {
}
public
Page
<
EngineerInfoEntity
>
fi
nd
EngineersByKeyAndPage
(
List
<
String
>
engineerCodes
,
String
key
,
Integer
page
,
Integer
size
)
{
public
Page
<
EngineerInfoEntity
>
fi
lter
EngineersByKeyAndPage
(
List
<
String
>
engineerCodes
,
String
key
,
Integer
page
,
Integer
size
)
{
Pageable
pageable
=
PageRequest
.
of
(
page
-
1
,
size
);
return
engineerInfoDao
.
findAllByEngineerCodeIn
(
engineerCodes
,
buildSpecification
(
key
),
pageable
);
}
public
List
<
EngineerInfoEntity
>
filterEngineersByKey
(
List
<
String
>
engineerCodes
,
String
key
)
{
return
engineerInfoDao
.
findAllByEngineerCodeIn
(
engineerCodes
,
buildSpecification
(
key
));
}
private
Specification
<
EngineerInfoEntity
>
buildSpecification
(
String
keyword
)
{
return
new
Specification
<
EngineerInfoEntity
>()
{
...
...
project-order/src/main/java/com/dituhui/pea/order/controller/EngineerController.java
View file @
9876397
...
...
@@ -5,7 +5,7 @@ import com.dituhui.pea.common.Result;
import
com.dituhui.pea.order.dto.EngineerBusinessUpdateReqDTO
;
import
com.dituhui.pea.order.dto.EngineerCalendarDTO
;
import
com.dituhui.pea.order.dto.EngineerSkillUpdateReqDTO
;
import
com.dituhui.pea.order.dto.EngineersGantt
Req
DTO
;
import
com.dituhui.pea.order.dto.EngineersGanttDTO
;
import
com.dituhui.pea.order.service.EngineerCalendarService
;
import
com.dituhui.pea.order.service.EngineerGanttService
;
import
com.dituhui.pea.order.service.EngineerService
;
...
...
@@ -141,7 +141,7 @@ public class EngineerController {
}
@PostMapping
(
"/engineer/schedule/gantt"
)
public
Result
<?>
getEngineersGanttList
(
@Validated
@RequestBody
EngineersGantt
ReqDTO
reqDTO
)
{
public
Result
<?>
getEngineersGanttList
(
@Validated
@RequestBody
EngineersGantt
DTO
.
Request
reqDTO
)
{
log
.
info
(
"getEngineersGanttList: {}"
,
reqDTO
);
Result
<?>
res
=
null
;
try
{
...
...
project-order/src/main/java/com/dituhui/pea/order/dao/EngineerInfoDao.java
View file @
9876397
...
...
@@ -21,6 +21,11 @@ public interface EngineerInfoDao extends JpaRepository<EngineerInfoEntity, Integ
List
<
EngineerInfoEntity
>
findByEngineerCodeIn
(
List
<
String
>
engineerCodes
);
default
List
<
EngineerInfoEntity
>
findAllByEngineerCodeIn
(
List
<
String
>
engineerCodes
,
Specification
<
EngineerInfoEntity
>
engineerInfoEntitySpecification
)
{
Specification
<
EngineerInfoEntity
>
spec
=
Specification
.
where
(
engineerCodeIn
(
engineerCodes
)).
and
(
engineerInfoEntitySpecification
);
return
findAll
(
spec
);
}
default
Page
<
EngineerInfoEntity
>
findAllByEngineerCodeIn
(
List
<
String
>
engineerCodes
,
Specification
<
EngineerInfoEntity
>
engineerInfoEntitySpecification
,
Pageable
pageable
)
{
Specification
<
EngineerInfoEntity
>
spec
=
Specification
.
where
(
engineerCodeIn
(
engineerCodes
)).
and
(
engineerInfoEntitySpecification
);
return
findAll
(
spec
,
pageable
);
...
...
project-order/src/main/java/com/dituhui/pea/order/dto/EngineersGantt
Resp
DTO.java
→
project-order/src/main/java/com/dituhui/pea/order/dto/EngineersGanttDTO.java
View file @
9876397
package
com
.
dituhui
.
pea
.
order
.
dto
;
import
com.dituhui.pea.order.config.OrderConfig
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fasterxml.jackson.databind.annotation.JsonDeserialize
;
...
...
@@ -11,12 +13,31 @@ import lombok.experimental.Accessors;
import
java.time.LocalDateTime
;
import
java.util.List
;
@lombok
.
Data
@Accessors
(
chain
=
true
)
public
class
EngineersGanttRespDTO
{
private
String
date
;
private
List
<?>
engineers
;
public
class
EngineersGanttDTO
{
@lombok
.
Data
public
static
class
Request
{
// 2种模式:前端可以直接传入精确的engineerCodes,
// 或者是levelType/levelValue/brandIds/branchIds/groupIds/teamIds/key,后端查询匹配
private
String
levelType
;
private
String
levelValue
;
private
Integer
page
=
OrderConfig
.
DEFAULT_PAGE_INDEX
;
private
Integer
size
=
OrderConfig
.
DEFAULT_PAGE_SIZE
;
private
String
date
;
private
List
<
String
>
engineerCodes
;
private
List
<
String
>
branchIds
;
private
List
<
String
>
groupIds
;
private
List
<
String
>
teamIds
;
private
String
key
;
}
@lombok
.
Data
@Accessors
(
chain
=
true
)
public
static
class
Result
{
private
String
date
;
private
List
<?>
engineers
;
}
/**
* GanttChart
...
...
project-order/src/main/java/com/dituhui/pea/order/dto/EngineersGanttReqDTO.java
deleted
100644 → 0
View file @
1bf0d37
package
com
.
dituhui
.
pea
.
order
.
dto
;
import
com.dituhui.pea.order.config.OrderConfig
;
import
java.util.List
;
@lombok
.
Data
public
class
EngineersGanttReqDTO
{
private
String
levelType
;
private
String
levelValue
;
private
Integer
page
=
OrderConfig
.
DEFAULT_PAGE_INDEX
;
private
Integer
size
=
OrderConfig
.
DEFAULT_PAGE_SIZE
;
private
String
date
;
private
List
<
String
>
engineerCodes
;
}
project-order/src/main/java/com/dituhui/pea/order/service/EngineerGanttService.java
View file @
9876397
package
com
.
dituhui
.
pea
.
order
.
service
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dto.EngineersGantt
Req
DTO
;
import
com.dituhui.pea.order.dto.EngineersGanttDTO
;
public
interface
EngineerGanttService
{
Result
<?>
getEngineersGanttList
(
EngineersGantt
ReqDTO
ganttReqDTO
);
Result
<?>
getEngineersGanttList
(
EngineersGantt
DTO
.
Request
ganttReqDTO
);
}
project-order/src/main/java/com/dituhui/pea/order/service/EngineerService.java
View file @
9876397
package
com
.
dituhui
.
pea
.
order
.
service
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.dto.EngineerCalendarDTO
;
import
com.dituhui.pea.order.dto.EngineersGanttReqDTO
;
import
java.util.List
;
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerCalendarServiceImpl.java
View file @
9876397
package
com
.
dituhui
.
pea
.
order
.
service
.
impl
;
import
cn.hutool.core.date.LocalDateTimeUtil
;
import
cn.hutool.core.date.Week
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.common.DateUtil
;
import
com.dituhui.pea.order.common.EngineerUtil
;
...
...
@@ -51,10 +50,10 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
// 技术员日历,查询 capacity_engineer_calendar表,如果当日有各种事项,进行显示;否则显示正常上班;
List
<
EngineerCalendarDTO
.
Engineer
>
engineers
=
new
ArrayList
<>();
List
<
String
>
allCodes
=
engineerUtil
.
getEngineesByLevel
(
req
.
getLevelType
(),
req
.
getLevelValue
()).
stream
()
List
<
String
>
allCodes
=
engineerUtil
.
getEnginee
r
sByLevel
(
req
.
getLevelType
(),
req
.
getLevelValue
()).
stream
()
.
map
(
EngineerInfoEntity:
:
getEngineerCode
).
collect
(
Collectors
.
toList
());
Page
<
EngineerInfoEntity
>
page
=
engineerUtil
.
fi
nd
EngineersByKeyAndPage
(
allCodes
,
req
.
getKey
(),
req
.
getPage
(),
req
.
getSize
());
Page
<
EngineerInfoEntity
>
page
=
engineerUtil
.
fi
lter
EngineersByKeyAndPage
(
allCodes
,
req
.
getKey
(),
req
.
getPage
(),
req
.
getSize
());
String
edate
=
LocalDate
.
parse
(
req
.
getDate
()).
plusDays
(
14
).
toString
();
for
(
EngineerInfoEntity
e
:
page
.
getContent
())
{
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerGanttServiceImpl.java
View file @
9876397
package
com
.
dituhui
.
pea
.
order
.
service
.
impl
;
import
com.dituhui.pea.common.Result
;
import
com.dituhui.pea.order.common.EngineerUtil
;
import
com.dituhui.pea.order.dao.CapacityEngineerStatDao
;
import
com.dituhui.pea.order.dao.EngineerInfoDao
;
import
com.dituhui.pea.order.dao.OrderAppointmentDao
;
import
com.dituhui.pea.order.dao.OrderRequestDao
;
import
com.dituhui.pea.order.dto.EngineersGanttReqDTO
;
import
com.dituhui.pea.order.dto.EngineersGanttRespDTO
;
import
com.dituhui.pea.order.dto.EngineersGanttDTO
;
import
com.dituhui.pea.order.dto.LabelValueDTO
;
import
com.dituhui.pea.order.entity.CapacityEngineerStatEntity
;
import
com.dituhui.pea.order.entity.EngineerInfoEntity
;
...
...
@@ -18,10 +18,7 @@ import org.apache.commons.lang3.StringUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -41,23 +38,32 @@ public class EngineerGanttServiceImpl implements EngineerGanttService {
@Autowired
private
OrderRequestDao
orderRequestDao
;
@Autowired
private
EngineerUtil
engineerUtil
;
@Override
public
Result
<?>
getEngineersGanttList
(
EngineersGantt
ReqDTO
reqDTO
)
{
public
Result
<?>
getEngineersGanttList
(
EngineersGantt
DTO
.
Request
reqDTO
)
{
// 按日期返回技术员们当天的服务甘特图,不需要翻页
log
.
info
(
"getEngineersGanttList: {}"
,
reqDTO
);
List
<
OrderAppointmentEntity
>
orderAppointments
=
orderAppointmentDao
.
findByDateAndEngineerCodeIn
(
reqDTO
.
getDate
(),
reqDTO
.
getEngineerCodes
());
List
<
String
>
engineerCodes
=
reqDTO
.
getEngineerCodes
();
if
(
engineerCodes
==
null
||
engineerCodes
.
size
()
>
0
)
{
// 需要根据levelType/levelValue/brandIds/branchIds/groupIds/teamIds/key,后端查询匹配
engineerCodes
=
findEngineers
(
reqDTO
.
getLevelType
(),
reqDTO
.
getLevelValue
(),
reqDTO
.
getBranchIds
(),
reqDTO
.
getGroupIds
(),
reqDTO
.
getTeamIds
(),
reqDTO
.
getKey
());
}
List
<
OrderAppointmentEntity
>
orderAppointments
=
orderAppointmentDao
.
findByDateAndEngineerCodeIn
(
reqDTO
.
getDate
(),
engineerCodes
);
List
<
String
>
orderIds
=
orderAppointments
.
stream
().
map
(
OrderAppointmentEntity:
:
getOrderId
).
collect
(
Collectors
.
toList
());
Map
<
String
,
OrderRequestEntity
>
mapOrderRequest
=
getOrdersByOrderIds
(
orderIds
);
HashMap
<
String
,
List
<
EngineersGantt
Resp
DTO
.
Order
>>
mapEngineers
=
new
HashMap
<>();
HashMap
<
String
,
List
<
EngineersGanttDTO
.
Order
>>
mapEngineers
=
new
HashMap
<>();
for
(
OrderAppointmentEntity
e
:
orderAppointments
)
{
log
.
info
(
"===== order_id: [{}]"
,
e
.
getOrderId
());
EngineersGantt
RespDTO
.
Order
order
=
new
EngineersGanttResp
DTO
.
Order
();
EngineersGantt
DTO
.
Order
order
=
new
EngineersGantt
DTO
.
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
<
EngineersGantt
Resp
DTO
.
Order
>
orders
=
null
;
List
<
EngineersGanttDTO
.
Order
>
orders
=
null
;
if
(
mapEngineers
.
containsKey
(
e
.
getEngineerCode
()))
{
orders
=
mapEngineers
.
get
(
e
.
getEngineerCode
());
}
else
{
...
...
@@ -67,10 +73,10 @@ public class EngineerGanttServiceImpl implements EngineerGanttService {
mapEngineers
.
put
(
e
.
getEngineerCode
(),
orders
);
}
List
<
EngineersGantt
Resp
DTO
.
GanttChart
>
engineers
=
new
ArrayList
<>();
for
(
String
engineerCode
:
reqDTO
.
getEngineerCodes
()
)
{
List
<
EngineersGanttDTO
.
GanttChart
>
engineers
=
new
ArrayList
<>();
for
(
String
engineerCode
:
engineerCodes
)
{
EngineerInfoEntity
engineerInfo
=
engineerInfoDao
.
getByEngineerCode
(
engineerCode
);
EngineersGantt
RespDTO
.
GanttChart
engineer
=
new
EngineersGanttResp
DTO
.
GanttChart
();
EngineersGantt
DTO
.
GanttChart
engineer
=
new
EngineersGantt
DTO
.
GanttChart
();
engineer
.
setEngineerCode
(
engineerCode
)
.
setStartTime
(
String
.
format
(
"%s 08:00"
,
reqDTO
.
getDate
()))
.
setEndTime
(
String
.
format
(
"%s 18:00"
,
reqDTO
.
getDate
()))
...
...
@@ -90,10 +96,36 @@ public class EngineerGanttServiceImpl implements EngineerGanttService {
// engineer.setErrorTip(); todo
engineers
.
add
(
engineer
);
}
EngineersGanttRespDTO
data
=
new
EngineersGanttRespDTO
().
setDate
(
reqDTO
.
getDate
()).
setEngineers
(
engineers
);
return
Result
.
success
(
data
);
EngineersGanttDTO
.
Result
res
=
new
EngineersGanttDTO
.
Result
();
res
.
setDate
(
reqDTO
.
getDate
()).
setEngineers
(
engineers
);
return
Result
.
success
(
res
);
}
private
List
<
String
>
findEngineers
(
String
levelType
,
String
levelValue
,
List
<
String
>
branchIds
,
List
<
String
>
groupIds
,
List
<
String
>
teamIds
,
String
key
)
{
// brandIds, groupIds, teamIds, 以team -> group -> branch 为顺序判断,前者优先;
List
<
String
>
engineerCodes
=
new
ArrayList
<>();
if
(
teamIds
!=
null
&&
teamIds
.
size
()
>
0
)
{
for
(
String
teamId
:
teamIds
)
{
engineerCodes
.
addAll
(
engineerUtil
.
getEngineersByLevel
(
"team"
,
teamId
).
stream
().
map
(
EngineerInfoEntity:
:
getEngineerCode
).
collect
(
Collectors
.
toList
()));
}
}
else
if
(
groupIds
!=
null
&&
groupIds
.
size
()
>
0
)
{
for
(
String
groupId
:
groupIds
)
{
engineerCodes
.
addAll
(
engineerUtil
.
getEngineersByLevel
(
"group"
,
groupId
).
stream
().
map
(
EngineerInfoEntity:
:
getEngineerCode
).
collect
(
Collectors
.
toList
()));
}
}
else
if
(
branchIds
!=
null
&&
branchIds
.
size
()
>
0
)
{
for
(
String
branchId
:
branchIds
)
{
engineerCodes
.
addAll
(
engineerUtil
.
getEngineersByLevel
(
"branch"
,
branchId
).
stream
().
map
(
EngineerInfoEntity:
:
getEngineerCode
).
collect
(
Collectors
.
toList
()));
}
}
else
{
engineerCodes
.
addAll
(
engineerUtil
.
getEngineersByLevel
(
levelType
,
levelValue
).
stream
().
map
(
EngineerInfoEntity:
:
getEngineerCode
).
collect
(
Collectors
.
toList
()));
}
// 最后,还需要根据key进行过滤(需要结合数据库表)
engineerCodes
=
new
ArrayList
<>(
new
HashSet
<>(
engineerCodes
));
return
engineerUtil
.
filterEngineersByKey
(
engineerCodes
,
key
).
stream
().
map
(
EngineerInfoEntity:
:
getEngineerCode
).
collect
(
Collectors
.
toList
());
}
public
Map
<
String
,
OrderRequestEntity
>
getOrdersByOrderIds
(
List
<
String
>
orderIds
)
{
List
<
OrderRequestEntity
>
orders
=
orderRequestDao
.
findAllByOrderIdIn
(
orderIds
);
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/OrganizationServiceImpl.java
View file @
9876397
...
...
@@ -115,7 +115,7 @@ public class OrganizationServiceImpl implements OrganizationService {
@Override
public
Result
<?>
getEngineersByLevel
(
String
levelType
,
String
levelValue
)
{
List
<
EngineerInfoEntity
>
engineers
=
engineerUtil
.
getEngineesByLevel
(
levelType
,
levelValue
);
List
<
EngineerInfoEntity
>
engineers
=
engineerUtil
.
getEnginee
r
sByLevel
(
levelType
,
levelValue
);
List
<
OrganizationEngineersDTO
.
Engineer
>
engineers1
=
engineers
.
stream
().
map
(
entity
->
{
return
new
OrganizationEngineersDTO
.
Engineer
()
.
setEngineerCode
(
entity
.
getEngineerCode
())
...
...
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