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
2efd4663
Commit
2efd4663
authored
Mar 17, 2026
by
DESKTOP-VKRD9QF\Administration
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
插单
parent
31b15e01
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
106 additions
and
60 deletions
+106
-60
ScheduleOperationService.java
...a/com/aps/service/Algorithm/ScheduleOperationService.java
+85
-40
PlanResultService.java
src/main/java/com/aps/service/plan/PlanResultService.java
+21
-20
No files found.
src/main/java/com/aps/service/Algorithm/ScheduleOperationService.java
View file @
2efd4663
...
@@ -961,7 +961,7 @@ if(targetOp.getSequence()>1) {
...
@@ -961,7 +961,7 @@ if(targetOp.getSequence()>1) {
newOrder
.
setRoutingId
(
newLaunchOrder
.
getRoutingId
());
newOrder
.
setRoutingId
(
newLaunchOrder
.
getRoutingId
());
newOrder
.
setRoutingCode
(
newLaunchOrder
.
getRoutingCode
());
newOrder
.
setRoutingCode
(
newLaunchOrder
.
getRoutingCode
());
newOrder
.
setSerie
(
newLaunchOrder
.
getSerie
());
newOrder
.
setSerie
(
newLaunchOrder
.
getSerie
());
newOrder
.
setNewCreate
(
true
);
// 获取当前最大的Order ID
// 获取当前最大的Order ID
int
maxOrderId
=
orders
.
stream
()
int
maxOrderId
=
orders
.
stream
()
...
@@ -989,11 +989,32 @@ if(targetOp.getSequence()>1) {
...
@@ -989,11 +989,32 @@ if(targetOp.getSequence()>1) {
newEntry
.
setGroupId
(
newGroupId
);
newEntry
.
setGroupId
(
newGroupId
);
newEntry
.
setQuantity
(
newLaunchOrder
.
getQuantity
());
newEntry
.
setQuantity
(
newLaunchOrder
.
getQuantity
());
newEntry
.
setSequence
(
processExec
.
getTaskSeq
()
!=
null
?
processExec
.
getTaskSeq
().
intValue
()
:
1
);
newEntry
.
setSequence
(
processExec
.
getTaskSeq
()
!=
null
?
processExec
.
getTaskSeq
().
intValue
()
:
1
);
newEntry
.
set
NewCreate
(
true
);
newEntry
.
set
TaskSeq
(
processExec
.
getTaskSeq
());
// 设置taskSeq字段
newEntry
.
setState
(
2
);
newEntry
.
setState
(
2
);
// 设置工序相关信息
// 设置工序相关信息
newEntry
.
setRoutingDetailId
(
processExec
.
getRoutingDetailId
());
newEntry
.
setRoutingDetailId
(
processExec
.
getRoutingDetailId
());
newEntry
.
setRoutingId
(
processExec
.
getRoutingId
());
newEntry
.
setRoutingCode
(
processExec
.
getRoutingCode
());
newEntry
.
setRoutingName
(
processExec
.
getRoutingName
());
newEntry
.
setRoutingDetailName
(
processExec
.
getRoutingDetailName
());
// 设置产品相关信息
newEntry
.
setProductId
(
newLaunchOrder
.
getMaterialId
());
newEntry
.
setProductCode
(
newLaunchOrder
.
getMaterialCode
());
newEntry
.
setProductName
(
newLaunchOrder
.
getMaterialName
());
// 设置部门信息
if
(
processExec
.
getDepartmentId
()
!=
null
)
{
newEntry
.
setDepartmentId
(
processExec
.
getDepartmentId
());
}
// 设置中断属性
newEntry
.
setIsInterrupt
(
processExec
.
getCanInterrupt
());
// 设置设备类型信息
newEntry
.
setEquipTypeID
(
processExec
.
getMachineId
());
// 使用runtime字段
// 使用runtime字段
if
(
processExec
.
getRuntime
()
!=
null
)
{
if
(
processExec
.
getRuntime
()
!=
null
)
{
newEntry
.
setRuntime
(
processExec
.
getRuntime
());
newEntry
.
setRuntime
(
processExec
.
getRuntime
());
...
@@ -1013,11 +1034,12 @@ if(targetOp.getSequence()>1) {
...
@@ -1013,11 +1034,12 @@ if(targetOp.getSequence()>1) {
newEntry
.
setEquipTypeName
(
processExec
.
getEquipTypeName
());
newEntry
.
setEquipTypeName
(
processExec
.
getEquipTypeName
());
newEntry
.
setEquipTypeCode
(
processExec
.
getEquipTypeCode
());
newEntry
.
setEquipTypeCode
(
processExec
.
getEquipTypeCode
());
// 设置设备选项(从数据库加载或使用默认值)
// 设备配置将在后面从插入位置的订单复制,这里先设置为空列表
// 这里需要根据实际情况设置MachineOptions
// 暂时使用空列表,后续在redecode时会重新计算
newEntry
.
setMachineOptions
(
new
ArrayList
<>());
newEntry
.
setMachineOptions
(
new
ArrayList
<>());
// 设置默认选中的设备ID(将在后面从插入位置订单复制)
newEntry
.
setSelectMachineID
(
null
);
newEntrys
.
add
(
newEntry
);
newEntrys
.
add
(
newEntry
);
}
}
...
@@ -1102,7 +1124,7 @@ if(targetOp.getSequence()>1) {
...
@@ -1102,7 +1124,7 @@ if(targetOp.getSequence()>1) {
}
}
}
}
// 6. 将新订单插入到指定订单后面的位置
// 6. 将新订单插入到指定订单后面的位置
,并使用相同的设备配置
List
<
Entry
>
afterOrderOps
=
allOperations
.
stream
()
List
<
Entry
>
afterOrderOps
=
allOperations
.
stream
()
.
filter
(
o
->
o
.
getOrderId
().
equals
(
afterOrderId
))
.
filter
(
o
->
o
.
getOrderId
().
equals
(
afterOrderId
))
.
sorted
(
Comparator
.
comparing
(
Entry:
:
getSequence
))
.
sorted
(
Comparator
.
comparing
(
Entry:
:
getSequence
))
...
@@ -1130,6 +1152,21 @@ if(targetOp.getSequence()>1) {
...
@@ -1130,6 +1152,21 @@ if(targetOp.getSequence()>1) {
chromosome
.
getOperationSequencing
().
add
(
newGroupId
);
chromosome
.
getOperationSequencing
().
add
(
newGroupId
);
}
}
}
}
// 使用插入位置订单的设备配置来更新新订单的工序
// 这样可以确保新订单使用相同的生产线和设备
for
(
int
i
=
0
;
i
<
newEntrys
.
size
()
&&
i
<
afterOrderOps
.
size
();
i
++)
{
Entry
newEntry
=
newEntrys
.
get
(
i
);
Entry
referenceEntry
=
afterOrderOps
.
get
(
i
);
// 复制设备配置
if
(
referenceEntry
.
getMachineOptions
()
!=
null
&&
!
referenceEntry
.
getMachineOptions
().
isEmpty
())
{
newEntry
.
setMachineOptions
(
new
ArrayList
<>(
referenceEntry
.
getMachineOptions
()));
newEntry
.
setSelectMachineID
(
referenceEntry
.
getSelectMachineID
());
newEntry
.
setEquipCode
(
referenceEntry
.
getEquipCode
());
newEntry
.
setEquipName
(
referenceEntry
.
getEquipName
());
}
}
}
else
{
}
else
{
// 如果找不到afterOrder,就添加到末尾
// 如果找不到afterOrder,就添加到末尾
for
(
int
i
=
0
;
i
<
newEntrys
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
newEntrys
.
size
();
i
++)
{
...
@@ -1137,8 +1174,16 @@ if(targetOp.getSequence()>1) {
...
@@ -1137,8 +1174,16 @@ if(targetOp.getSequence()>1) {
}
}
}
}
// 临时设置isCheckSf为false,避免CreateNewOpSequence重新生成operationSequencing
boolean
originalIsCheckSf
=
globalParam
.
isIsCheckSf
();
globalParam
.
setIsCheckSf
(
false
);
// 7. 重新解码,重新计算排产结果
// 7. 重新解码,重新计算排产结果
redecode
(
chromosome
,
chromosome
.
getBaseTime
(),
globalParam
);
redecode
(
chromosome
,
chromosome
.
getBaseTime
(),
globalParam
);
// 恢复isCheckSf的原始值
globalParam
.
setIsCheckSf
(
originalIsCheckSf
);
}
}
public
void
MergeOrder
(
Chromosome
chromosome
,
String
sourceorderId
,
String
targetorderId
,
GlobalParam
globalParam
)
{
public
void
MergeOrder
(
Chromosome
chromosome
,
String
sourceorderId
,
String
targetorderId
,
GlobalParam
globalParam
)
{
...
...
src/main/java/com/aps/service/plan/PlanResultService.java
View file @
2efd4663
...
@@ -219,7 +219,7 @@ public class PlanResultService {
...
@@ -219,7 +219,7 @@ public class PlanResultService {
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
ApsTimeConfig
timeConfig
=
apsTimeConfigService
.
getOne
(
new
LambdaQueryWrapper
<>());
ApsTimeConfig
timeConfig
=
apsTimeConfigService
.
getOne
(
new
LambdaQueryWrapper
<>());
// 4.5 在排产前标记锁定期工单占用的设备时间段
// 4.5 在排产前标记锁定期工单占用的设备时间段
//
lockedOrderProcessorService.markLockedOrdersOccupiedTime(machines, timeConfig.getBaseTime());
lockedOrderProcessorService
.
markLockedOrdersOccupiedTime
(
machines
,
timeConfig
.
getBaseTime
());
// 5. 执行调度算法
// 5. 执行调度算法
GeneticAlgorithm
scheduler
=
new
GeneticAlgorithm
(
globalParam
,
machines
,
orders
,
Materials1
,
materialIds
,
machineScheduler
,
entryRel
,
materialRequirementService
,
_sceneService
,
SceneId
);
//new GeneticAlgorithm(products, machines, orders, machineScheduler);
GeneticAlgorithm
scheduler
=
new
GeneticAlgorithm
(
globalParam
,
machines
,
orders
,
Materials1
,
materialIds
,
machineScheduler
,
entryRel
,
materialRequirementService
,
_sceneService
,
SceneId
);
//new GeneticAlgorithm(products, machines, orders, machineScheduler);
...
@@ -234,7 +234,7 @@ public class PlanResultService {
...
@@ -234,7 +234,7 @@ public class PlanResultService {
// 添加锁定期工单到调度结果中
// 添加锁定期工单到调度结果中
// 这里会从 Dispatch 表加载锁定期工单,并添加到 chromosome.result 中
// 这里会从 Dispatch 表加载锁定期工单,并添加到 chromosome.result 中
//
lockedOrderProcessorService.addLockedOrdersToResult(chromosome);
lockedOrderProcessorService
.
addLockedOrdersToResult
(
chromosome
);
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
...
@@ -1515,6 +1515,7 @@ public class PlanResultService {
...
@@ -1515,6 +1515,7 @@ public class PlanResultService {
newOrderId
,
newLaunchOrder
.
getOrderCode
(),
newProcessExecs
.
size
());
newOrderId
,
newLaunchOrder
.
getOrderCode
(),
newProcessExecs
.
size
());
// 调用ScheduleOperationService的方法将新订单加入排产
// 调用ScheduleOperationService的方法将新订单加入排产
// 设备配置将从插入位置的订单复制,不需要单独加载
ScheduleOperationService
scheduleOperation
=
new
ScheduleOperationService
(
materialRequirementService
,
this
);
ScheduleOperationService
scheduleOperation
=
new
ScheduleOperationService
(
materialRequirementService
,
this
);
scheduleOperation
.
InsertOrder
(
chromosome
,
afterOrderId
,
newOrderId
,
newLaunchOrder
,
newProcessExecs
,
globalParam
);
scheduleOperation
.
InsertOrder
(
chromosome
,
afterOrderId
,
newOrderId
,
newLaunchOrder
,
newProcessExecs
,
globalParam
);
...
...
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