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 b946d519
authored
Oct 31, 2023
by
刘鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix(工作日历): 日程修订提示信息修订
1 parent
3b086a3c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
11 deletions
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerCalendarServiceImpl.java
project-order/src/main/java/com/dituhui/pea/order/service/impl/EngineerCalendarServiceImpl.java
View file @
b946d51
...
...
@@ -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