Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mes
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ximai
mes
Commits
0382c323
Commit
0382c323
authored
Nov 25, 2024
by
李驰骋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工时计算调整为只在排班日历范围内的
parent
ebbda24d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
78 additions
and
5 deletions
+78
-5
ProStartWorkServiceImpl.java
...m/ximai/mes/pro/service/impl/ProStartWorkServiceImpl.java
+12
-5
ProStartWorkServiceImplTest.java
...test/java/com/bs/mes/pro/ProStartWorkServiceImplTest.java
+66
-0
No files found.
mes/src/main/java/com/ximai/mes/pro/service/impl/ProStartWorkServiceImpl.java
View file @
0382c323
...
@@ -252,14 +252,21 @@ public class ProStartWorkServiceImpl implements IProStartWorkService {
...
@@ -252,14 +252,21 @@ public class ProStartWorkServiceImpl implements IProStartWorkService {
QueryWrapper
<
CalPlanWorkunit
>
calPlanWorkunitQueryWrapper
=
new
QueryWrapper
<>();
QueryWrapper
<
CalPlanWorkunit
>
calPlanWorkunitQueryWrapper
=
new
QueryWrapper
<>();
Date
startDate
=
startWork
.
getStartDate
();
Date
startDate
=
startWork
.
getStartDate
();
Date
endDate
=
startWork
.
getEndDate
();
Date
endDate
=
startWork
.
getEndDate
();
calPlanWorkunitQueryWrapper
.
between
(
"start_date"
,
startDate
,
endDate
).
eq
(
"rest_flag"
,
1
).
eq
(
"workunit_id"
,
workunitId
)
calPlanWorkunitQueryWrapper
.
between
(
"start_date"
,
startDate
,
endDate
).
eq
(
"rest_flag"
,
0
).
eq
(
"workunit_id"
,
workunitId
)
.
or
()
.
or
()
.
between
(
"end_date"
,
startDate
,
endDate
).
eq
(
"rest_flag"
,
1
).
eq
(
"workunit_id"
,
workunitId
);
.
between
(
"end_date"
,
startDate
,
endDate
).
eq
(
"rest_flag"
,
0
).
eq
(
"workunit_id"
,
workunitId
);
List
<
CalPlanWorkunit
>
calPlanWorkunits
=
calPlanWorkunitService
.
selectListByQw
(
calPlanWorkunitQueryWrapper
);
List
<
CalPlanWorkunit
>
calPlanWorkunits
=
calPlanWorkunitService
.
selectListByQw
(
calPlanWorkunitQueryWrapper
);
return
this
.
computeWorkTime
(
startWork
,
calPlanWorkunits
,
workunitId
);
}
private
Map
<
String
,
Long
>
computeWorkTime
(
ProStartWork
startWork
,
List
<
CalPlanWorkunit
>
calPlanWorkunits
,
Long
workunitId
)
{
Date
startDate
=
startWork
.
getStartDate
();
Date
endDate
=
startWork
.
getEndDate
();
long
startWorkDateTimeStamp
=
startDate
.
getTime
();
long
startWorkDateTimeStamp
=
startDate
.
getTime
();
long
startWorkendDateTimeStamp
=
endDate
.
getTime
();
long
startWorkendDateTimeStamp
=
endDate
.
getTime
();
//统计排班日历内加工工时
List
<
CalPlanWorkunit
>
planWorkunitList
=
calPlanWorkunits
.
stream
().
filter
(
x
->
x
.
getStartDate
().
getTime
()
<
x
.
getEndDate
().
getTime
()).
collect
(
Collectors
.
toList
());
List
<
CalPlanWorkunit
>
planWorkunitList
=
calPlanWorkunits
.
stream
().
filter
(
x
->
x
.
getStartDate
().
getTime
()
<
x
.
getEndDate
().
getTime
()).
collect
(
Collectors
.
toList
());
LongSummaryStatistics
brea
kTimeSum
=
planWorkunitList
.
stream
().
map
(
x
->
{
LongSummaryStatistics
wor
kTimeSum
=
planWorkunitList
.
stream
().
map
(
x
->
{
long
cPwStartTimeStamp
=
x
.
getStartDate
().
getTime
();
long
cPwStartTimeStamp
=
x
.
getStartDate
().
getTime
();
long
endTimeStamp
=
x
.
getEndDate
().
getTime
();
long
endTimeStamp
=
x
.
getEndDate
().
getTime
();
if
(
cPwStartTimeStamp
<
startWorkDateTimeStamp
)
{
if
(
cPwStartTimeStamp
<
startWorkDateTimeStamp
)
{
...
@@ -272,8 +279,8 @@ public class ProStartWorkServiceImpl implements IProStartWorkService {
...
@@ -272,8 +279,8 @@ public class ProStartWorkServiceImpl implements IProStartWorkService {
return
endTimeStamp
>
cPwStartTimeStamp
?
(
endTimeStamp
-
cPwStartTimeStamp
)
:
0
;
return
endTimeStamp
>
cPwStartTimeStamp
?
(
endTimeStamp
-
cPwStartTimeStamp
)
:
0
;
}).
collect
(
Collectors
.
summarizingLong
(
x
->
x
));
}).
collect
(
Collectors
.
summarizingLong
(
x
->
x
));
long
breakTimeSec
=
brea
kTimeSum
.
getSum
();
long
workTimeSec
=
wor
kTimeSum
.
getSum
();
long
workTimeSec
=
startWorkendDateTimeStamp
-
startWorkDateTimeStamp
-
brea
kTimeSec
;
long
breakTimeSec
=
startWorkendDateTimeStamp
-
startWorkDateTimeStamp
-
wor
kTimeSec
;
workTimeSec
=
workTimeSec
<
0
?
0L
:
workTimeSec
;
workTimeSec
=
workTimeSec
<
0
?
0L
:
workTimeSec
;
Map
<
String
,
Long
>
map
=
new
HashMap
<>();
Map
<
String
,
Long
>
map
=
new
HashMap
<>();
map
.
put
(
"breakTimeSec"
,
breakTimeSec
/
1000
);
map
.
put
(
"breakTimeSec"
,
breakTimeSec
/
1000
);
...
...
mes/src/test/java/com/bs/mes/pro/ProStartWorkServiceImplTest.java
0 → 100644
View file @
0382c323
package
com
.
bs
.
mes
.
pro
;
import
cn.hutool.core.date.DateUtil
;
import
com.ximai.mes.cal.domain.CalPlanWorkunit
;
import
com.ximai.mes.pro.domain.ProStartWork
;
import
com.ximai.mes.pro.schedule.Equipment
;
import
com.ximai.mes.pro.schedule.strategy.EvaluateEquipmentDeliveryTime
;
import
com.ximai.mes.pro.service.impl.ProStartWorkServiceImpl
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
java.lang.reflect.Method
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
public
class
ProStartWorkServiceImplTest
{
@Test
public
void
computeWorkTime
()
throws
Exception
{
ProStartWorkServiceImpl
proStartWorkService
=
new
ProStartWorkServiceImpl
();
Method
methods
=
ProStartWorkServiceImpl
.
class
.
getDeclaredMethod
(
"computeWorkTime"
,
ProStartWork
.
class
,
List
.
class
,
Long
.
class
);
methods
.
setAccessible
(
true
);
// 测试1 加工时间超出上班时间
ProStartWork
proStartWork
=
new
ProStartWork
();
List
<
CalPlanWorkunit
>
calPlanWorkunits
=
new
ArrayList
<>();
proStartWork
.
setStartDate
(
DateUtil
.
parse
(
"2024-11-22 13:53"
,
"yyyy-MM-dd HH:mm"
));
proStartWork
.
setEndDate
(
DateUtil
.
parse
(
"2024-11-23 13:03"
,
"yyyy-MM-dd HH:mm"
));
calPlanWorkunits
.
add
(
new
CalPlanWorkunit
(){
{
setStartDate
(
DateUtil
.
parse
(
"2024-11-22 09:00"
,
"yyyy-MM-dd HH:mm"
));
setEndDate
(
DateUtil
.
parse
(
"2024-11-22 13:00"
,
"yyyy-MM-dd HH:mm"
));
};
});
calPlanWorkunits
.
add
(
new
CalPlanWorkunit
(){
{
setStartDate
(
DateUtil
.
parse
(
"2024-11-22 15:00"
,
"yyyy-MM-dd HH:mm"
));
setEndDate
(
DateUtil
.
parse
(
"2024-11-22 19:00"
,
"yyyy-MM-dd HH:mm"
));
};
});
calPlanWorkunits
.
add
(
new
CalPlanWorkunit
(){
{
setStartDate
(
DateUtil
.
parse
(
"2024-11-23 09:00"
,
"yyyy-MM-dd HH:mm"
));
setEndDate
(
DateUtil
.
parse
(
"2024-11-23 13:00"
,
"yyyy-MM-dd HH:mm"
));
};
});
calPlanWorkunits
.
add
(
new
CalPlanWorkunit
(){
{
setStartDate
(
DateUtil
.
parse
(
"2024-11-23 15:00"
,
"yyyy-MM-dd HH:mm"
));
setEndDate
(
DateUtil
.
parse
(
"2024-11-23 19:00"
,
"yyyy-MM-dd HH:mm"
));
};
});
Map
<
String
,
Long
>
rst
=
(
Map
)
methods
.
invoke
(
proStartWorkService
,
proStartWork
,
calPlanWorkunits
,
0
l
);
Assert
.
assertEquals
((
240
+
240
)*
60
,
rst
.
get
(
"workTimeSec"
).
longValue
());
Assert
.
assertEquals
((
proStartWork
.
getEndDate
().
getTime
()-
proStartWork
.
getStartDate
().
getTime
())/
1000
-
rst
.
get
(
"workTimeSec"
).
longValue
(),
rst
.
get
(
"breakTimeSec"
).
longValue
());
//测试2 加工时间在排班日历范围内
proStartWork
.
setEndDate
(
DateUtil
.
parse
(
"2024-11-23 12:48"
,
"yyyy-MM-dd HH:mm"
));
rst
=
(
Map
)
methods
.
invoke
(
proStartWorkService
,
proStartWork
,
calPlanWorkunits
,
0
l
);
Assert
.
assertEquals
((
228
+
240
)*
60
,
rst
.
get
(
"workTimeSec"
).
longValue
());
Assert
.
assertEquals
((
proStartWork
.
getEndDate
().
getTime
()-
proStartWork
.
getStartDate
().
getTime
())/
1000
-
rst
.
get
(
"workTimeSec"
).
longValue
(),
rst
.
get
(
"breakTimeSec"
).
longValue
());
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment