Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
HYH.APSJ
Project
Project
Details
Activity
Releases
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
佟礼
HYH.APSJ
Commits
afccd954
Commit
afccd954
authored
Feb 10, 2026
by
DESKTOP-VKRD9QF\Administration
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://39.100.78.207:1213/tongli/hyh.apsj
parents
fb51b206
23f09171
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
33 additions
and
33 deletions
+33
-33
Entry.java
src/main/java/com/aps/entity/basic/Entry.java
+16
-16
GeneticDecoder.java
src/main/java/com/aps/service/Algorithm/GeneticDecoder.java
+7
-7
MaterialRequirementService.java
...com/aps/service/Algorithm/MaterialRequirementService.java
+2
-2
ScheduleOperationService.java
...a/com/aps/service/Algorithm/ScheduleOperationService.java
+8
-8
No files found.
src/main/java/com/aps/entity/basic/Entry.java
View file @
afccd954
...
...
@@ -21,7 +21,7 @@ import java.util.List;
@Data
public
class
Entry
{
public
Entry
()
{
P
revEntryIds
=
new
ArrayList
<
OperationDependency
>();
p
revEntryIds
=
new
ArrayList
<
OperationDependency
>();
}
/**
...
...
@@ -57,29 +57,29 @@ public class Entry {
/**
* 工单ID
*/
p
ublic
String
E
xecId
;
p
rivate
String
e
xecId
;
/**
* 工单ID
*/
p
ublic
String
M
ainId
;
p
rivate
String
m
ainId
;
/**
* 离散参数
*/
p
ublic
List
<
RoutingDiscreteParam
>
D
iscreteParameter
;
p
rivate
List
<
RoutingDiscreteParam
>
d
iscreteParameter
;
/**
* 基因编号
*/
p
ublic
double
P
riority
=
1
;
p
rivate
double
p
riority
=
1
;
/**
* 数量
*/
p
ublic
double
Q
uantity
;
p
rivate
double
q
uantity
;
/**
* 工序顺序
*/
p
ublic
int
S
equence
;
p
rivate
int
s
equence
;
/**
* 可选设备列表
*/
...
...
@@ -93,22 +93,22 @@ public class Entry {
/**
* 前工单ID
*/
p
ublic
List
<
OperationDependency
>
P
revEntryIds
;
//前工序
p
rivate
List
<
OperationDependency
>
p
revEntryIds
;
//前工序
/**
* 后工单ID
*/
p
ublic
List
<
OperationDependency
>
N
extEntryIds
;
//后工序
p
rivate
List
<
OperationDependency
>
n
extEntryIds
;
//后工序
/**
* 数据状态 1 拆分 2 新建
*/
p
ublic
Integer
state
;
p
rivate
Integer
state
;
/**
* 是否可中断,间缝插针
*/
public
Long
I
sInterrupt
=
1
l
;
private
Long
i
sInterrupt
=
1
l
;
/**
* 所需物料
...
...
@@ -121,26 +121,26 @@ public class Entry {
* 设备资源组
*/
p
ublic
Long
E
quipTypeID
;
p
rivate
Long
e
quipTypeID
;
/// <summary>
/// 当前工序依赖的前置工序ID(半成品工序→成品工序)
/// </summary>
p
ublic
List
<
Integer
>
D
ependentOnOrderIds
=
new
ArrayList
<>();
p
rivate
List
<
Integer
>
d
ependentOnOrderIds
=
new
ArrayList
<>();
/// <summary>
/// 关联的成品工序ID(核心:明确该半成品服务于哪个成品工序)
/// </summary>
p
ublic
List
<
Integer
>
T
argetFinishedOperationId
;
p
rivate
List
<
Integer
>
t
argetFinishedOperationId
;
p
ublic
boolean
newCreate
=
false
;
p
rivate
boolean
newCreate
=
false
;
/// <summary>
/// 半成品最晚完工时间(即成品工序开始时间-1天)
/// </summary>
p
ublic
LocalDateTime
L
atestCompletionTime
;
p
rivate
LocalDateTime
l
atestCompletionTime
;
private
String
equipTypeName
;
//资源组名称
...
...
src/main/java/com/aps/service/Algorithm/GeneticDecoder.java
View file @
afccd954
...
...
@@ -566,13 +566,13 @@ if(finishedOrder==null||finishedOrder.size()==0)
if
(
setupTime
==
0
)
{
geneDetails
=
machineCalculator
.
getNextAvailableTime
(
machine
,
earliestStartTime
,
-
1
,
processingTimeTotal
,
machineTasks
,
operation
.
IsInterrupt
!=
1
,
true
,
processingTime
,
operation
.
getQuantity
(),
true
);
processingTimeTotal
,
machineTasks
,
operation
.
getIsInterrupt
()
!=
1
,
true
,
processingTime
,
operation
.
getQuantity
(),
true
);
}
else
{
CopyOnWriteArrayList
<
TimeSegment
>
AvailableTimeSegment
=
(
CopyOnWriteArrayList
<
TimeSegment
>)
reslte
.
get
(
6
);
Map
<
Integer
,
Object
>
result
=
machineCalculator
.
CreateScheduleResult
(
machine
,
processingTimeTotal
,
earliestStartTime
,
AvailableTimeSegment
,
processingTime
,
operation
.
getQuantity
(),
operation
.
IsInterrupt
!=
1
,
setupTime
,
_globalParam
.
is_smoothChangeOverInWeek
(),
setupStartTime
);
AvailableTimeSegment
,
processingTime
,
operation
.
getQuantity
(),
operation
.
getIsInterrupt
()
!=
1
,
setupTime
,
_globalParam
.
is_smoothChangeOverInWeek
(),
setupStartTime
);
...
...
@@ -582,7 +582,7 @@ if(finishedOrder==null||finishedOrder.size()==0)
}
}
else
{
geneDetails
=
machineCalculator
.
getNextAvailableTime
(
machine
,
earliestStartTime
,
-
1
,
processingTimeTotal
,
machineTasks
,
operation
.
IsInterrupt
!=
1
,
true
,
processingTime
,
operation
.
getQuantity
(),
true
);
processingTimeTotal
,
machineTasks
,
operation
.
getIsInterrupt
()
!=
1
,
true
,
processingTime
,
operation
.
getQuantity
(),
true
);
}
...
...
@@ -1270,7 +1270,7 @@ if(MaterialRequirements==null||MaterialRequirements.size()==0)
{
CopyOnWriteArrayList
<
TimeSegment
>
AvailableTimeSegment
=
machineCalculator
.
getMachineAvailableTime
(
machine
,
earliestStartTime
+
setupTime
,
processingTimeTotal
,
null
,
operation
.
IsInterrupt
!=
1
);
processingTimeTotal
,
null
,
operation
.
getIsInterrupt
()
!=
1
);
if
(
AvailableTimeSegment
!=
null
)
{
reslte
.
put
(
6
,
AvailableTimeSegment
);
...
...
@@ -1294,7 +1294,7 @@ if(MaterialRequirements==null||MaterialRequirements.size()==0)
//如果是前提供任务是相同的则跳出
CopyOnWriteArrayList
<
TimeSegment
>
AvailableTimeSegment
=
machineCalculator
.
getMachineAvailableTime
(
machine
,
earliestStartTime
,
processingTimeTotal
+
setupTime
,
null
,
operation
.
IsInterrupt
!=
1
);
processingTimeTotal
+
setupTime
,
null
,
operation
.
getIsInterrupt
()
!=
1
);
if
(
AvailableTimeSegment
!=
null
)
{
reslte
.
put
(
6
,
AvailableTimeSegment
);
...
...
@@ -1337,7 +1337,7 @@ if(MaterialRequirements==null||MaterialRequirements.size()==0)
if
(
lastGeneOnMachine
.
getEndTime
()>
earliestStartTime
)
{
CopyOnWriteArrayList
<
TimeSegment
>
AvailableTimeSegment
=
machineCalculator
.
getMachineAvailableTime
(
machine
,
earliestStartTime
,
processingTimeTotal
,
machineTasks
,
operation
.
IsInterrupt
!=
1
);
processingTimeTotal
,
machineTasks
,
operation
.
getIsInterrupt
()
!=
1
);
if
(
AvailableTimeSegment
!=
null
)
{
reslte
.
put
(
6
,
AvailableTimeSegment
);
...
...
@@ -1359,7 +1359,7 @@ if(MaterialRequirements==null||MaterialRequirements.size()==0)
}
}
else
{
CopyOnWriteArrayList
<
TimeSegment
>
AvailableTimeSegment
=
machineCalculator
.
getMachineAvailableTime
(
machine
,
earliestStartTime
,
processingTimeTotal
,
machineTasks
,
operation
.
IsInterrupt
!=
1
);
processingTimeTotal
,
machineTasks
,
operation
.
getIsInterrupt
()
!=
1
);
if
(
AvailableTimeSegment
!=
null
)
{
reslte
.
put
(
6
,
AvailableTimeSegment
);
int
start
=
(
int
)
ChronoUnit
.
SECONDS
.
between
(
baseTime
,
AvailableTimeSegment
.
get
(
0
).
getStart
());
...
...
src/main/java/com/aps/service/Algorithm/MaterialRequirementService.java
View file @
afccd954
...
...
@@ -176,10 +176,10 @@ public class MaterialRequirementService {
{
throw
new
RuntimeException
(
"配套数据有问题,需求数量为空,请检查数据,"
+
component
.
getMaterialNumber
());
}
double
allneeded
=
component
.
getSpentQty
().
doubleValue
()/
component
.
getMainQty
().
doubleValue
()
*
operation
.
Quantity
;
double
allneeded
=
component
.
getSpentQty
().
doubleValue
()/
component
.
getMainQty
().
doubleValue
()
*
operation
.
getQuantity
()
;
OrderMaterialRequirement
orderMaterialRequirement
=
CreateMaterialRequirement
(
material
,
orderId
,
""
,
operation
,
allneeded
,
component
.
getSpentQty
().
doubleValue
(),
component
.
getMainQty
().
doubleValue
(),
operation
.
Quantity
);
allneeded
,
component
.
getSpentQty
().
doubleValue
(),
component
.
getMainQty
().
doubleValue
(),
operation
.
getQuantity
()
);
orderMaterialRequirement
.
setBomId
(
component
.
getStrId
());
if
(!
material
.
getMaterialTypeName
().
equals
(
"MP"
)
&&
isIsCheckSf
)
{
materialIds
.
add
(
materialId
);
//半成品ID
...
...
src/main/java/com/aps/service/Algorithm/ScheduleOperationService.java
View file @
afccd954
...
...
@@ -76,7 +76,7 @@ int newStartTime=0;
int
GroupId
=
targetOp1
.
getGroupId
();
OptionalInt
OperationIndex
=
IntStream
.
range
(
0
,
OperationSequencing
.
size
())
.
filter
(
i
->
OperationSequencing
.
get
(
i
).
equals
(
GroupId
))
// 过滤出值为1的索引
.
skip
(
targetOp1
.
Sequence
-
1
)
// 跳过第一个匹配项
.
skip
(
targetOp1
.
getSequence
()
-
1
)
// 跳过第一个匹配项
.
findFirst
();
// 取第二个匹配项
targetopIndex1
=
OperationIndex
.
getAsInt
();
if
(
isfront
)
...
...
@@ -121,7 +121,7 @@ int newStartTime=0;
if
(
targetopId
!=
0
)
{
OptionalInt
OperationIndex
=
IntStream
.
range
(
0
,
OperationSequencing
.
size
())
.
filter
(
i
->
OperationSequencing
.
get
(
i
).
equals
(
targetOp
.
getGroupId
()))
// 过滤出值为1的索引
.
skip
(
targetOp
.
Sequence
-
1
)
// 跳过第一个匹配项
.
skip
(
targetOp
.
getSequence
()
-
1
)
// 跳过第一个匹配项
.
findFirst
();
// 取第二个匹配项
int
targetOpIndex
=
OperationIndex
.
getAsInt
();
opsIndexs
.
add
(
targetOpIndex
);
...
...
@@ -135,7 +135,7 @@ int newStartTime=0;
for
(
Entry
targetOp4:
targetOp2s
)
{
OptionalInt
OperationIndex1
=
IntStream
.
range
(
0
,
OperationSequencing
.
size
())
.
filter
(
i
->
OperationSequencing
.
get
(
i
).
equals
(
targetOp
.
getGroupId
()))
// 过滤出值为1的索引
.
skip
(
targetOp4
.
Sequence
-
1
)
// 跳过第一个匹配项
.
skip
(
targetOp4
.
getSequence
()
-
1
)
// 跳过第一个匹配项
.
findFirst
();
// 取第二个匹配项
int
targetOpIndex2
=
OperationIndex1
.
getAsInt
();
if
(
targetOpIndex2
<
targetopIndex1
)
//后面的工序位置比目标位置靠前
...
...
@@ -190,7 +190,7 @@ int newStartTime=0;
int
GroupId
=
targetOp1
.
getGroupId
();
OptionalInt
OperationIndex
=
IntStream
.
range
(
0
,
OperationSequencing
.
size
())
.
filter
(
i
->
OperationSequencing
.
get
(
i
).
equals
(
GroupId
))
// 过滤出值为1的索引
.
skip
(
targetOp1
.
Sequence
-
1
)
// 跳过第一个匹配项
.
skip
(
targetOp1
.
getSequence
()
-
1
)
// 跳过第一个匹配项
.
findFirst
();
// 取第二个匹配项
int
targetOpIndex
=
OperationIndex
.
getAsInt
();
if
(!
isfront
)
...
...
@@ -629,7 +629,7 @@ if(targetOp.getSequence()>1) {
String
newId
=
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
);
if
(
i
==
0
)
{
newids
.
put
(
targetOp
.
ExecId
,
splitCounts
[
i
]);
newids
.
put
(
targetOp
.
getExecId
()
,
splitCounts
[
i
]);
}
else
{
newids
.
put
(
newId
,
splitCounts
[
i
]);
// 添加新节点
...
...
@@ -656,7 +656,7 @@ if(targetOp.getSequence()>1) {
List
<
Integer
>
OperationSequencing
=
chromosome
.
getOperationSequencing
();
OptionalInt
OperationIndex
=
IntStream
.
range
(
0
,
OperationSequencing
.
size
())
.
filter
(
i
->
OperationSequencing
.
get
(
i
).
equals
(
targetOp
.
getGroupId
()))
// 过滤出值为1的索引
.
skip
(
targetOp
.
Sequence
-
1
)
// 跳过第一个匹配项
.
skip
(
targetOp
.
getSequence
()
-
1
)
// 跳过第一个匹配项
.
findFirst
();
// 取第二个匹配项
int
targetOpIndex
=
OperationIndex
.
getAsInt
()+
1
;
for
(
NodeInfo
nodeInfo
:
nodeInfoList
)
{
...
...
@@ -913,7 +913,7 @@ if(targetOp.getSequence()>1) {
OptionalInt
OperationIndex
=
IntStream
.
range
(
0
,
OperationSequencing
.
size
())
.
filter
(
i
->
OperationSequencing
.
get
(
i
).
equals
(
entry
.
getGroupId
()))
// 过滤出值为1的索引
.
skip
(
entry
.
Sequence
-
1
)
// 跳过第一个匹配项
.
skip
(
entry
.
getSequence
()
-
1
)
// 跳过第一个匹配项
.
findFirst
();
int
targetOpIndex
=
OperationIndex
.
getAsInt
()+
1
;
for
(
int
i
=
maxgroupId
;
i
<
OperatRels
.
size
();
i
++)
{
...
...
@@ -1089,7 +1089,7 @@ if(targetOp.getSequence()>1) {
//拆分的工序数量补齐到其他的
Entry
main
=
entrys
.
stream
().
filter
(
t
->
t
.
MainId
.
equals
(
entry
.
getMainId
())
&&
t
.
getId
()!=
entry
.
getId
())
filter
(
t
->
t
.
getMainId
()
.
equals
(
entry
.
getMainId
())
&&
t
.
getId
()!=
entry
.
getId
())
.
findFirst
()
.
orElse
(
null
);
if
(
main
!=
null
)
{
...
...
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