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
Expand all
Hide 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
This diff is collapsed.
Click to expand it.
src/main/java/com/aps/service/plan/PlanResultService.java
View file @
2efd4663
...
...
@@ -219,7 +219,7 @@ public class PlanResultService {
.
collect
(
Collectors
.
toList
());
ApsTimeConfig
timeConfig
=
apsTimeConfigService
.
getOne
(
new
LambdaQueryWrapper
<>());
// 4.5 在排产前标记锁定期工单占用的设备时间段
//
lockedOrderProcessorService.markLockedOrdersOccupiedTime(machines, timeConfig.getBaseTime());
lockedOrderProcessorService
.
markLockedOrdersOccupiedTime
(
machines
,
timeConfig
.
getBaseTime
());
// 5. 执行调度算法
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 {
// 添加锁定期工单到调度结果中
// 这里会从 Dispatch 表加载锁定期工单,并添加到 chromosome.result 中
//
lockedOrderProcessorService.addLockedOrdersToResult(chromosome);
lockedOrderProcessorService
.
addLockedOrdersToResult
(
chromosome
);
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
...
...
@@ -1443,7 +1443,7 @@ public class PlanResultService {
* 插单功能:在指定订单后插入新订单
* 步骤1:先将新订单数据插入数据库
* 步骤2:使用类似复制订单的方式将新订单加入排产
*
*
* @param SceneId 场景ID
* @param afterOrderId 插入位置订单ID(新订单将排在此订单后面)
* @param newOrderData 新订单数据
...
...
@@ -1454,11 +1454,11 @@ public class PlanResultService {
String
orderCode
=
(
String
)
newOrderData
.
get
(
"orderCode"
);
String
materialId
=
(
String
)
newOrderData
.
get
(
"materialId"
);
Double
quantity
=
((
Number
)
newOrderData
.
get
(
"quantity"
)).
doubleValue
();
LocalDateTime
startDate
=
null
;
LocalDateTime
endDate
=
null
;
Integer
priority
=
1
;
if
(
newOrderData
.
containsKey
(
"startDate"
))
{
startDate
=
LocalDateTime
.
parse
((
String
)
newOrderData
.
get
(
"startDate"
));
}
...
...
@@ -1468,11 +1468,11 @@ public class PlanResultService {
if
(
newOrderData
.
containsKey
(
"priority"
))
{
priority
=
((
Number
)
newOrderData
.
get
(
"priority"
)).
intValue
();
}
// 调用insertOrder插入数据库
R
<
String
>
insertResult
=
lanuchService
.
insertOrder
(
SceneId
,
orderCode
,
materialId
,
startDate
,
endDate
,
priority
,
quantity
);
R
<
String
>
insertResult
=
lanuchService
.
insertOrder
(
SceneId
,
orderCode
,
materialId
,
startDate
,
endDate
,
priority
,
quantity
);
// if (!insertResult.isSuccess()) {
// throw new RuntimeException("插单失败: " + insertResult.getMsg());
// }
...
...
@@ -1480,44 +1480,45 @@ public class PlanResultService {
// 从返回消息中提取新订单ID
String
message
=
insertResult
.
getData
();
String
newOrderId
=
message
.
substring
(
message
.
indexOf
(
"订单ID: "
)
+
6
);
log
.
info
(
"新订单已插入数据库,订单ID: {}"
,
newOrderId
);
// 步骤2:使用类似SpiltOrder的方式,将新订单加入排产
// 这里需要重新加载场景,因为数据库已经有新订单了
// 然后使用类似复制的逻辑,将新订单排在afterOrderId后面
GlobalParam
globalParam
=
new
GlobalParam
();
Chromosome
chromosome
=
_sceneService
.
loadChromosomeFromFile
(
SceneId
);
// 从数据库加载新插入的订单及其工序
ProdLaunchOrder
newLaunchOrder
=
_prodLaunchOrderService
.
lambdaQuery
()
.
eq
(
ProdLaunchOrder:
:
getSceneId
,
SceneId
)
.
eq
(
ProdLaunchOrder:
:
getOrderId
,
newOrderId
)
.
one
();
if
(
newLaunchOrder
==
null
)
{
throw
new
RuntimeException
(
"未找到新插入的订单: "
+
newOrderId
);
}
// 加载新订单的工序
List
<
ProdProcessExec
>
newProcessExecs
=
_prodProcessExecService
.
lambdaQuery
()
.
eq
(
ProdProcessExec:
:
getSceneId
,
SceneId
)
.
eq
(
ProdProcessExec:
:
getOrderId
,
newOrderId
)
.
orderBy
(
true
,
true
,
ProdProcessExec:
:
getTaskSeq
)
.
list
();
if
(
newProcessExecs
.
isEmpty
())
{
throw
new
RuntimeException
(
"新订单没有工序: "
+
newOrderId
);
}
log
.
info
(
"加载新订单: OrderId={}, OrderCode={}, 工序数={}"
,
log
.
info
(
"加载新订单: OrderId={}, OrderCode={}, 工序数={}"
,
newOrderId
,
newLaunchOrder
.
getOrderCode
(),
newProcessExecs
.
size
());
// 调用ScheduleOperationService的方法将新订单加入排产
// 设备配置将从插入位置的订单复制,不需要单独加载
ScheduleOperationService
scheduleOperation
=
new
ScheduleOperationService
(
materialRequirementService
,
this
);
scheduleOperation
.
InsertOrder
(
chromosome
,
afterOrderId
,
newOrderId
,
newLaunchOrder
,
newProcessExecs
,
globalParam
);
WriteScheduleSummary
(
chromosome
);
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
return
chromosome
;
...
...
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