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 8f7ea441
authored
Oct 31, 2023
by
huangjinxin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop' into develop
2 parents
e615f025
310c1191
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
60 additions
and
22 deletions
project-order/src/main/java/com/dituhui/pea/order/dto/BusinessTeamConfigSubmitDTO.java
project-order/src/main/java/com/dituhui/pea/order/service/CapacityQueryService.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/BusinessTeamServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/CapacityQueryServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerCalendarServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/dto/BusinessTeamConfigSubmitDTO.java
View file @
8f7ea44
...
...
@@ -7,7 +7,7 @@ public class BusinessTeamConfigSubmitDTO {
/**
* 网点指派策略
*/
private
String
assig
i
nStrategy
;
private
String
assignStrategy
;
/**
* cutoff时间
*/
...
...
project-order/src/main/java/com/dituhui/pea/order/service/CapacityQueryService.java
View file @
8f7ea44
...
...
@@ -57,6 +57,16 @@ public interface CapacityQueryService {
*/
CapacityQueryDTO
.
Segment
queryEngineerCapacity
(
String
engineerCode
,
LocalDate
date
);
/**
* 查询指定日期内的容量
*
* @param engineerCode 工程师编码
* @param startDate 开始日期
* @param endDate 结束日期
* @return 日期内工程师的容量信息
*/
CapacityQueryDTO
.
PersonalResult
queryEngineerCapacity
(
String
engineerCode
,
LocalDate
startDate
,
LocalDate
endDate
);
/**
* 查询单个工程师指定日期时间段内的的容量状态
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/BusinessTeamServiceImpl.java
View file @
8f7ea44
...
...
@@ -327,8 +327,8 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
if
(
req
.
getNextScheduleInterval
()
!=
null
)
{
entity
.
setIntervalScheduleNext
(
Integer
.
valueOf
(
req
.
getNextScheduleInterval
()));
}
if
(
req
.
getAssig
i
nStrategy
()
!=
null
)
{
entity
.
setStrategyAppointment
(
req
.
getAssig
i
nStrategy
());
if
(
req
.
getAssignStrategy
()
!=
null
)
{
entity
.
setStrategyAppointment
(
req
.
getAssignStrategy
());
}
if
(
req
.
getScheduleStrategy
()
!=
null
)
{
entity
.
setStrategySchedule
(
req
.
getScheduleStrategy
());
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/CapacityQueryServiceImpl.java
View file @
8f7ea44
...
...
@@ -218,6 +218,11 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
return
null
;
}
@Override
public
CapacityQueryDTO
.
PersonalResult
queryEngineerCapacity
(
String
engineerCode
,
LocalDate
startDate
,
LocalDate
endDate
)
{
//
return
null
;
}
@Override
public
CapacityQueryDTO
.
Segment
queryEngineerCapacity
(
String
engineerCode
,
CapacityQueryDTO
.
Service
service
,
...
...
@@ -345,20 +350,24 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
allEngineerTimeSlice
.
addAll
(
engineerTimeSlice
);
}
//计算所有工程师半天类型容量
List
<
CapacityQueryDTO
.
Segment
>
engineerHalfDay
=
CapacityUtils
.
getEngineerTypeDay
(
halfDayTypeTimeSlice
,
allEngineerTimeSlice
,
currentDate
,
totalTakeTime
);
List
<
CapacityQueryDTO
.
Segment
>
objects
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
halfDayTypeTimeSlice
))
{
List
<
CapacityQueryDTO
.
Segment
>
engineerHalfDay
=
CapacityUtils
.
getEngineerTypeDay
(
halfDayTypeTimeSlice
,
allEngineerTimeSlice
,
currentDate
,
totalTakeTime
);
objects
.
addAll
(
engineerHalfDay
);
}
//计算所有工程师全天天类型容量
List
<
CapacityQueryDTO
.
Segment
>
engineerAllDay
=
CapacityUtils
.
getEngineerTypeDay
(
allDayTypeTimeSlice
,
allEngineerTimeSlice
,
currentDate
,
totalTakeTime
);
if
(
CollectionUtils
.
isNotEmpty
(
allDayTypeTimeSlice
))
{
List
<
CapacityQueryDTO
.
Segment
>
engineerAllDay
=
CapacityUtils
.
getEngineerTypeDay
(
allDayTypeTimeSlice
,
allEngineerTimeSlice
,
currentDate
,
totalTakeTime
);
objects
.
addAll
(
engineerAllDay
);
}
//计算所有工程师时间段类型容量
/*List<CapacityQueryDTO.Segment> timeSliceTwoHour = CapacityUtils.getEngineerTypeDay(timeSliceEntities,
allEngineerTimeSlice, currentDate, totalTakeTime);*/
/*objects.addAll(timeSliceTwoHour);*/
CapacityQueryDTO
.
Data
data
=
new
CapacityQueryDTO
.
Data
();
data
.
setDate
(
DateUtil
.
toDate
(
currentDate
));
List
<
CapacityQueryDTO
.
Segment
>
objects
=
new
ArrayList
<>();
objects
.
addAll
(
engineerHalfDay
);
objects
.
addAll
(
engineerAllDay
);
/*objects.addAll(timeSliceTwoHour);*/
data
.
setSegments
(
objects
);
return
data
;
}
...
...
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerCalendarServiceImpl.java
View file @
8f7ea44
...
...
@@ -34,6 +34,9 @@ import com.dituhui.pea.order.service.EngineerCalendarService;
import
com.dituhui.pea.user.IUser
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
...
...
@@ -56,6 +59,7 @@ import java.util.Collections;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
...
...
@@ -273,10 +277,12 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
if
(
beginDate
.
isEqual
(
endDate
))
{
LocalDateTime
startTime
=
DateUtils
.
localDateTimeFromStr
(
beginTime
);
LocalDateTime
endTime1
=
DateUtils
.
localDateTimeFromStr
(
endTime
);
if
(
checkTimesHasOverlap
(
endDate
,
engineerCode
,
startTime
,
endTime1
))
{
Optional
<
CheckTime
>
checkTimeOptional
=
checkTimesHasOverlap
(
endDate
,
engineerCode
,
startTime
,
endTime1
);
if
(
checkTimeOptional
.
isPresent
())
{
CheckTime
checkTime
=
checkTimeOptional
.
get
();
throw
new
BusinessException
(
"工号为"
+
engineerCode
+
"的工程师在"
+
DateTimeUtil
.
DATETIME_FORMAT_NON_SECONDS
.
format
(
startTime
)
+
"到"
+
DateTimeUtil
.
DATETIME_FORMAT_NON_SECONDS
.
format
(
endTime1
)
+
"区间已有日程安排"
);
+
checkTime
.
getStartTime
(
)
+
"到"
+
checkTime
.
getEndTime
(
)
+
"区间已有日程安排"
);
}
// 设定的是同一天,简单处理
CapacityEngineerCalendarEntity
e
=
new
CapacityEngineerCalendarEntity
();
...
...
@@ -326,10 +332,12 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
e
.
setEndTime
(
DateUtils
.
localDateTimeFromStr
(
etime
));
}
//校验是否有当天时间段的记录
if
(
checkTimesHasOverlap
(
current
,
engineerCode
,
e
.
getStartTime
(),
e
.
getEndTime
()))
{
Optional
<
CheckTime
>
checkTimeOptional
=
checkTimesHasOverlap
(
current
,
engineerCode
,
e
.
getStartTime
(),
e
.
getEndTime
());
if
(
checkTimeOptional
.
isPresent
())
{
CheckTime
checkTime
=
checkTimeOptional
.
get
();
throw
new
BusinessException
(
"工号为"
+
engineerCode
+
"的工程师在"
+
DateTimeUtil
.
DATETIME_FORMAT_NON_SECONDS
.
format
(
e
.
getStartTime
()
)
+
"到"
+
DateTimeUtil
.
DATETIME_FORMAT_NON_SECONDS
.
format
(
e
.
getStartTime
()
)
+
"区间已有日程安排"
);
+
checkTime
.
getStartTime
(
)
+
"到"
+
checkTime
.
getEndTime
(
)
+
"区间已有日程安排"
);
}
e
.
setWorkday
(
DateUtils
.
formatDate
(
current
));
...
...
@@ -343,20 +351,31 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
capacityEngineerCalendarDao
.
saveAll
(
all
);
}
private
boolean
checkTimesHasOverlap
(
LocalDate
date
,
String
engineerCode
,
LocalDateTime
dynaStartTime
,
LocalDateTime
dynaEndTime
)
{
private
Optional
<
CheckTime
>
checkTimesHasOverlap
(
LocalDate
date
,
String
engineerCode
,
LocalDateTime
dynaStartTime
,
LocalDateTime
dynaEndTime
)
{
//获取指定日期的工作人员日历
List
<
CapacityEngineerCalendarEntity
>
calendar
=
capacityEngineerCalendarDao
.
findCalendarByWorkdayAndEngineerCode
(
DateTimeUtil
.
formatDate
(
date
),
engineerCode
);
if
(
CollectionUtils
.
isEmpty
(
calendar
))
{
return
false
;
return
Optional
.
empty
()
;
}
//进行时间交集检查, 如果有交集返回 true 无则返回
return
calendar
.
stream
()
.
anyMatch
(
t
->
{
.
filter
(
t
->
{
LocalDateTime
fixedStartTime
=
t
.
getStartTime
();
LocalDateTime
fixedEndTime
=
t
.
getEndTime
();
return
DateUtil
.
checkTimesHasOverlap
(
dynaStartTime
,
dynaEndTime
,
fixedStartTime
,
fixedEndTime
);
});
})
.
map
(
t
->
new
CheckTime
(
DateTimeUtil
.
DATETIME_FORMAT_NON_SECONDS
.
format
(
t
.
getStartTime
()),
DateTimeUtil
.
DATETIME_FORMAT_NON_SECONDS
.
format
(
t
.
getEndTime
())))
.
findAny
();
}
@Setter
@Getter
@AllArgsConstructor
class
CheckTime
{
private
String
startTime
;
private
String
endTime
;
}
@Override
...
...
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