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
c8e8eeea
Commit
c8e8eeea
authored
Jan 05, 2026
by
DESKTOP-VKRD9QF\Administration
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
物料需求
parent
bf350b40
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
220 additions
and
33 deletions
+220
-33
LanuchController.java
src/main/java/com/aps/controller/LanuchController.java
+1
-1
MaintenanceWindowController.java
...com/aps/controller/gantt/MaintenanceWindowController.java
+24
-1
Chromosome.java
src/main/java/com/aps/entity/Algorithm/Chromosome.java
+2
-0
OrderMaterialRequirement.java
...va/com/aps/entity/Algorithm/OrderMaterialRequirement.java
+6
-3
Entry.java
src/main/java/com/aps/entity/basic/Entry.java
+4
-0
OrderMaterialRequirementMapper.java
...n/java/com/aps/mapper/OrderMaterialRequirementMapper.java
+17
-0
GeneticDecoder.java
src/main/java/com/aps/service/Algorithm/GeneticDecoder.java
+7
-15
MaterialRequirementService.java
...com/aps/service/Algorithm/MaterialRequirementService.java
+2
-2
RoutingDataService.java
...in/java/com/aps/service/Algorithm/RoutingDataService.java
+6
-2
ScheduleOperationService.java
...a/com/aps/service/Algorithm/ScheduleOperationService.java
+72
-5
OrderMaterialRequirementService.java
...java/com/aps/service/OrderMaterialRequirementService.java
+17
-0
LanuchServiceImpl.java
src/main/java/com/aps/service/impl/LanuchServiceImpl.java
+18
-1
OrderMaterialRequirementServiceImpl.java
...aps/service/impl/OrderMaterialRequirementServiceImpl.java
+28
-0
PlanResultService.java
src/main/java/com/aps/service/plan/PlanResultService.java
+16
-3
No files found.
src/main/java/com/aps/controller/LanuchController.java
View file @
c8e8eeea
...
@@ -81,7 +81,7 @@ public class LanuchController {
...
@@ -81,7 +81,7 @@ public class LanuchController {
// 在这里可以添加时间格式转换逻辑
// 在这里可以添加时间格式转换逻辑
// 根据不同格式解析时间字符串
// 根据不同格式解析时间字符串
Chromosome
scheduleChromosomes
=
planResultService
.
schedule
(
sceneId
);
Chromosome
scheduleChromosomes
=
planResultService
.
execute2
(
sceneId
);
return
R
.
ok
(
"运算完成"
);
return
R
.
ok
(
"运算完成"
);
}
}
...
...
src/main/java/com/aps/controller/gantt/MaintenanceWindowController.java
View file @
c8e8eeea
...
@@ -34,7 +34,7 @@ public class MaintenanceWindowController {
...
@@ -34,7 +34,7 @@ public class MaintenanceWindowController {
mediaType
=
"application/json"
,
mediaType
=
"application/json"
,
examples
=
@io
.
swagger
.
v3
.
oas
.
annotations
.
media
.
ExampleObject
(
examples
=
@io
.
swagger
.
v3
.
oas
.
annotations
.
media
.
ExampleObject
(
name
=
"添加维护窗口示例"
,
name
=
"添加维护窗口示例"
,
value
=
"{\n \"sceneId\": \"B571EF6682DB463AB2977B1055A74112\",\n \"machineId\": 3402,\n \"maintenanceWindow\": {\n \"
id\": \"maintenance-001\",\n \"
startTime\": \"2025-11-03T07:36:00.000Z\",\n \"endTime\": \"2025-11-03T09:36:00.000Z\",\n \"reason\": \"定期维护\"\n }\n}"
value
=
"{\n \"sceneId\": \"B571EF6682DB463AB2977B1055A74112\",\n \"machineId\": 3402,\n \"maintenanceWindow\": {\n \"startTime\": \"2025-11-03T07:36:00.000Z\",\n \"endTime\": \"2025-11-03T09:36:00.000Z\",\n \"reason\": \"定期维护\"\n }\n}"
)
)
)
)
)
)
...
@@ -69,6 +69,29 @@ public class MaintenanceWindowController {
...
@@ -69,6 +69,29 @@ public class MaintenanceWindowController {
return
R
.
ok
(
"删除成功"
);
return
R
.
ok
(
"删除成功"
);
}
}
@PostMapping
(
"/batchDelete"
)
@Operation
(
summary
=
"批量删除维护窗口"
,
description
=
"批量删除指定机器的维护窗口"
,
requestBody
=
@io
.
swagger
.
v3
.
oas
.
annotations
.
parameters
.
RequestBody
(
description
=
"批量删除维护窗口请求参数"
,
content
=
@io
.
swagger
.
v3
.
oas
.
annotations
.
media
.
Content
(
mediaType
=
"application/json"
,
examples
=
@io
.
swagger
.
v3
.
oas
.
annotations
.
media
.
ExampleObject
(
name
=
"批量删除维护窗口示例"
,
value
=
"{\n \"sceneId\": \"scene001\",\n \"machineId\": 1,\n \"maintenanceIds\": [\"maint001\", \"maint002\", \"maint003\"]\n}"
)
)
)
)
public
R
<
String
>
delMaintenanceWindowBatch
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
String
sceneId
=
ParamValidator
.
getString
(
params
,
"sceneId"
,
"场景ID"
);
Long
machineId
=
ParamValidator
.
getLong
(
params
,
"machineId"
,
"机器ID"
);
List
<
String
>
maintenanceIds
=
(
List
<
String
>)
params
.
get
(
"maintenanceIds"
);
Chromosome
result
=
planResultService
.
DelMaintenanceWindowBatch
(
sceneId
,
machineId
,
maintenanceIds
);
return
R
.
ok
(
"批量删除成功"
);
}
@PostMapping
(
"/get"
)
@PostMapping
(
"/get"
)
@Operation
(
summary
=
"获取维护窗口"
,
description
=
"获取指定机器的维护窗口列表"
,
@Operation
(
summary
=
"获取维护窗口"
,
description
=
"获取指定机器的维护窗口列表"
,
requestBody
=
@io
.
swagger
.
v3
.
oas
.
annotations
.
parameters
.
RequestBody
(
requestBody
=
@io
.
swagger
.
v3
.
oas
.
annotations
.
parameters
.
RequestBody
(
...
...
src/main/java/com/aps/entity/Algorithm/Chromosome.java
View file @
c8e8eeea
...
@@ -6,6 +6,8 @@ import com.aps.entity.basic.Machine;
...
@@ -6,6 +6,8 @@ import com.aps.entity.basic.Machine;
import
com.aps.entity.basic.Order
;
import
com.aps.entity.basic.Order
;
import
lombok.Data
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
...
src/main/java/com/aps/entity/Algorithm/OrderMaterialRequirement.java
View file @
c8e8eeea
package
com
.
aps
.
entity
.
Algorithm
;
package
com
.
aps
.
entity
.
Algorithm
;
import
com.aps.entity.basic.MaterialType
;
import
com.aps.entity.basic.MaterialType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
lombok.Data
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -16,7 +17,7 @@ public class OrderMaterialRequirement {
...
@@ -16,7 +17,7 @@ public class OrderMaterialRequirement {
private
String
orderId
;
private
String
orderId
;
private
int
operationId
;
private
int
operationId
;
private
String
child
o
rderId
;
private
String
child
O
rderId
;
private
String
materialId
;
private
String
materialId
;
private
String
materialCode
;
private
String
materialCode
;
private
String
materialName
;
private
String
materialName
;
...
@@ -55,6 +56,7 @@ public class OrderMaterialRequirement {
...
@@ -55,6 +56,7 @@ public class OrderMaterialRequirement {
/**
/**
* 层级
* 层级
*/
*/
@TableField
(
exist
=
false
)
private
int
level
;
private
int
level
;
/**
/**
...
@@ -80,12 +82,13 @@ public class OrderMaterialRequirement {
...
@@ -80,12 +82,13 @@ public class OrderMaterialRequirement {
/**
/**
* 创建或使用的半成品订单ID
* 创建或使用的半成品订单ID
*/
*/
@TableField
(
exist
=
false
)
private
List
<
Integer
>
productOrderID
=
new
ArrayList
<>();
private
List
<
Integer
>
productOrderID
=
new
ArrayList
<>();
/**
/**
* 检验周期
* 检验周期
*/
*/
private
Long
Ck
eckLeadTime
;
private
Long
ch
eckLeadTime
;
@TableField
(
exist
=
false
)
private
List
<
OrderMaterialRequirement
>
replaceMaterial
=
new
ArrayList
<>();
private
List
<
OrderMaterialRequirement
>
replaceMaterial
=
new
ArrayList
<>();
}
}
src/main/java/com/aps/entity/basic/Entry.java
View file @
c8e8eeea
package
com
.
aps
.
entity
.
basic
;
package
com
.
aps
.
entity
.
basic
;
import
com.aps.entity.Algorithm.OperationDependency
;
import
com.aps.entity.Algorithm.OperationDependency
;
import
com.aps.entity.RoutingDiscreteParam
;
import
com.aps.entity.RoutingDiscreteParam
;
import
com.fasterxml.jackson.databind.annotation.JsonDeserialize
;
import
lombok.Data
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -35,6 +37,8 @@ public class Entry {
...
@@ -35,6 +37,8 @@ public class Entry {
*/
*/
public
String
SceneId
;
public
String
SceneId
;
private
Integer
routingId
;
private
Integer
routingId
;
private
String
routingCode
;
private
String
routingName
;
private
Long
routingDetailId
;
private
Long
routingDetailId
;
private
Long
taskSeq
;
private
Long
taskSeq
;
private
String
routingDetailName
;
private
String
routingDetailName
;
...
...
src/main/java/com/aps/mapper/OrderMaterialRequirementMapper.java
0 → 100644
View file @
c8e8eeea
package
com
.
aps
.
mapper
;
import
com.aps.entity.Algorithm.OrderMaterialRequirement
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* <p>
* 订单物料需求表 Mapper 接口
* </p>
*
* @author MyBatis-Plus
* @since 2026-01-05
*/
public
interface
OrderMaterialRequirementMapper
extends
BaseMapper
<
OrderMaterialRequirement
>
{
}
src/main/java/com/aps/service/Algorithm/GeneticDecoder.java
View file @
c8e8eeea
...
@@ -386,17 +386,7 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -386,17 +386,7 @@ if(finishedOrder==null||finishedOrder.size()==0)
.
orElse
(
null
);
.
orElse
(
null
);
if
(
lastGeneOnMachine
!=
null
)
{
if
(
lastGeneOnMachine
!=
null
)
{
// 设备上已有任务,当前任务必须在设备可用后开始
// 设备可用时间 = 前一个任务的主处理结束时间(后处理不占用设备)
int
machineAvailableTime
=
lastGeneOnMachine
.
getEndTime
();
int
machineAvailableTime
=
lastGeneOnMachine
.
getEndTime
();
if
(
setupTime
>
0
)
{
if
(
setupTime
>
0
)
{
if
(
_globalParam
.
is_smoothSetup
())
{
if
(
_globalParam
.
is_smoothSetup
())
{
...
@@ -513,6 +503,8 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -513,6 +503,8 @@ if(finishedOrder==null||finishedOrder.size()==0)
result
.
setProcessingTime
(
processingTimeTotal
);
result
.
setProcessingTime
(
processingTimeTotal
);
result
.
setGeneDetails
(
geneDetails
);
result
.
setGeneDetails
(
geneDetails
);
// System.out.println("huanxingshijian="+result.getChangeOverTime()+"-------------------"+result.getOrderId()+"--------"+result.getExecId()+"---------"+prev.getOrderId()+"--------"+prev.getExecId());
chromosome
.
getResult
().
add
(
result
);
chromosome
.
getResult
().
add
(
result
);
return
endTime
;
return
endTime
;
}
}
...
@@ -625,9 +617,9 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -625,9 +617,9 @@ if(finishedOrder==null||finishedOrder.size()==0)
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
if
(!
oe
.
isEmpty
())
{
if
(!
oe
.
isEmpty
())
{
int
CkeckLeadTime
=
0
;
int
CkeckLeadTime
=
0
;
if
(
sf
.
getC
k
eckLeadTime
()!=
null
)
if
(
sf
.
getC
h
eckLeadTime
()!=
null
)
{
{
CkeckLeadTime
=(
int
)
(
sf
.
getC
k
eckLeadTime
()*
24
*
60
);
CkeckLeadTime
=(
int
)
(
sf
.
getC
h
eckLeadTime
()*
24
*
60
);
}
}
sfTime1
=
oe
.
stream
().
mapToInt
(
GAScheduleResult:
:
getEndTime
).
max
().
orElse
(
0
)
sfTime1
=
oe
.
stream
().
mapToInt
(
GAScheduleResult:
:
getEndTime
).
max
().
orElse
(
0
)
+
CkeckLeadTime
;
+
CkeckLeadTime
;
...
@@ -850,9 +842,9 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -850,9 +842,9 @@ if(finishedOrder==null||finishedOrder.size()==0)
DiscreteParameterMatrixService
service
=
SpringContextUtil
.
getBean
(
DiscreteParameterMatrixService
.
class
);
DiscreteParameterMatrixService
service
=
SpringContextUtil
.
getBean
(
DiscreteParameterMatrixService
.
class
);
if
(
service
!=
null
)
{
if
(
service
!=
null
)
{
double
discreteParameterMatrixValue
=
service
.
getDiscreteParameterMatrixValue
(
prev
,
operation
);
double
discreteParameterMatrixValue
=
service
.
getDiscreteParameterMatrixValue
(
operation
,
prev
);
setupTime
=
(
int
)
discreteParameterMatrixValue
;
setupTime
=
(
int
)
discreteParameterMatrixValue
;
operation
.
setChangeLineTime
(
discreteParameterMatrixValue
);
if
(
operation
.
getOrderId
()==
"a0e61488-0647-4f8e-a27c-cfed9cbbba52"
){
if
(
operation
.
getOrderId
()==
"a0e61488-0647-4f8e-a27c-cfed9cbbba52"
){
...
@@ -865,7 +857,7 @@ if(finishedOrder==null||finishedOrder.size()==0)
...
@@ -865,7 +857,7 @@ if(finishedOrder==null||finishedOrder.size()==0)
}
}
operation
.
setChangeLineTime
(
setupTime
);
System
.
out
.
println
(
"换型时间111"
+
setupTime
);
System
.
out
.
println
(
"换型时间111"
+
setupTime
);
...
...
src/main/java/com/aps/service/Algorithm/MaterialRequirementService.java
View file @
c8e8eeea
...
@@ -648,7 +648,7 @@ if(routingIds.size()==0)
...
@@ -648,7 +648,7 @@ if(routingIds.size()==0)
OrderMaterialRequirement
orderMaterial
=
new
OrderMaterialRequirement
();
OrderMaterialRequirement
orderMaterial
=
new
OrderMaterialRequirement
();
orderMaterial
.
setOrderId
(
orderId
);
orderMaterial
.
setOrderId
(
orderId
);
orderMaterial
.
setOperationId
(
operation
.
getId
());
orderMaterial
.
setOperationId
(
operation
.
getId
());
orderMaterial
.
setChild
o
rderId
(
StringUtils
.
isBlank
(
childorderId
)
?
orderId
:
childorderId
);
orderMaterial
.
setChild
O
rderId
(
StringUtils
.
isBlank
(
childorderId
)
?
orderId
:
childorderId
);
orderMaterial
.
setRequiredQuantity
(
allneeded
);
orderMaterial
.
setRequiredQuantity
(
allneeded
);
if
(
material
==
null
)
{
if
(
material
==
null
)
{
material
=
_materials
.
stream
()
material
=
_materials
.
stream
()
...
@@ -665,7 +665,7 @@ if(routingIds.size()==0)
...
@@ -665,7 +665,7 @@ if(routingIds.size()==0)
orderMaterial
.
setMaterialName
(
material
.
getName
());
orderMaterial
.
setMaterialName
(
material
.
getName
());
orderMaterial
.
setMaterialTypeName
(
material
.
getMaterialTypeName
());
orderMaterial
.
setMaterialTypeName
(
material
.
getMaterialTypeName
());
orderMaterial
.
setMaterialId
(
material
.
getId
());
orderMaterial
.
setMaterialId
(
material
.
getId
());
orderMaterial
.
setC
k
eckLeadTime
(
material
.
getCkeckLeadTime
());
orderMaterial
.
setC
h
eckLeadTime
(
material
.
getCkeckLeadTime
());
// 扣减现有库存
// 扣减现有库存
...
...
src/main/java/com/aps/service/Algorithm/RoutingDataService.java
View file @
c8e8eeea
...
@@ -550,7 +550,8 @@ public class RoutingDataService {
...
@@ -550,7 +550,8 @@ public class RoutingDataService {
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
for
(
EquipMaintainTask
equipMaintainTask
:
EquipMaintainTasks1
)
{
for
(
EquipMaintainTask
equipMaintainTask
:
EquipMaintainTasks1
)
{
MaintenanceWindow
maintenanceWindow
=
new
MaintenanceWindow
();
MaintenanceWindow
maintenanceWindow
=
new
MaintenanceWindow
();
maintenanceWindow
.
setId
(
equipMaintainTask
.
getId
().
toString
());
// maintenanceWindow.setId(equipMaintainTask.getId().toString());
maintenanceWindow
.
setId
(
UUID
.
randomUUID
().
toString
());
maintenanceWindow
.
setStartTime
(
equipMaintainTask
.
getPlanStartTime
());
maintenanceWindow
.
setStartTime
(
equipMaintainTask
.
getPlanStartTime
());
maintenanceWindow
.
setEndTime
(
equipMaintainTask
.
getPlanFinishTime
());
maintenanceWindow
.
setEndTime
(
equipMaintainTask
.
getPlanFinishTime
());
maintenanceWindow
.
setEquipCode
(
equipMaintainTask
.
getEquipCode
());
maintenanceWindow
.
setEquipCode
(
equipMaintainTask
.
getEquipCode
());
...
@@ -632,7 +633,10 @@ public class RoutingDataService {
...
@@ -632,7 +633,10 @@ public class RoutingDataService {
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
for
(
EquipMaintainTask
equipMaintainTask
:
EquipMaintainTasks1
)
{
for
(
EquipMaintainTask
equipMaintainTask
:
EquipMaintainTasks1
)
{
MaintenanceWindow
maintenanceWindow
=
new
MaintenanceWindow
();
MaintenanceWindow
maintenanceWindow
=
new
MaintenanceWindow
();
maintenanceWindow
.
setId
(
equipMaintainTask
.
getId
().
toString
());
maintenanceWindow
.
setId
(
UUID
.
randomUUID
().
toString
());
// maintenanceWindow.setId(equipMaintainTask.getId().toString());
maintenanceWindow
.
setStartTime
(
equipMaintainTask
.
getPlanStartTime
());
maintenanceWindow
.
setStartTime
(
equipMaintainTask
.
getPlanStartTime
());
maintenanceWindow
.
setEndTime
(
equipMaintainTask
.
getPlanFinishTime
());
maintenanceWindow
.
setEndTime
(
equipMaintainTask
.
getPlanFinishTime
());
maintenanceWindow
.
setEquipCode
(
equipMaintainTask
.
getEquipCode
());
maintenanceWindow
.
setEquipCode
(
equipMaintainTask
.
getEquipCode
());
...
...
src/main/java/com/aps/service/Algorithm/ScheduleOperationService.java
View file @
c8e8eeea
...
@@ -155,6 +155,11 @@ Integer newMachineId1=newMachineId.intValue();
...
@@ -155,6 +155,11 @@ Integer newMachineId1=newMachineId.intValue();
.
findFirst
().
orElse
(
null
);
.
findFirst
().
orElse
(
null
);
if
(
machine
!=
null
)
if
(
machine
!=
null
)
{
{
// 检查时间是否与现有维护窗口重复
if
(
isTimeOverlap
(
machine
.
getMaintenanceWindows
(),
maintenanceWindow
))
{
throw
new
RuntimeException
(
"维修时间已存在"
);
}
maintenanceWindow
.
setEquipCode
(
machine
.
getCode
());
maintenanceWindow
.
setEquipCode
(
machine
.
getCode
());
maintenanceWindow
.
setEquipName
(
machine
.
getName
());
maintenanceWindow
.
setEquipName
(
machine
.
getName
());
...
@@ -175,6 +180,27 @@ Integer newMachineId1=newMachineId.intValue();
...
@@ -175,6 +180,27 @@ Integer newMachineId1=newMachineId.intValue();
}
}
/**
* 检查新维护窗口是否与现有维护窗口时间重叠
* @param existingWindows 现有维护窗口列表
* @param newWindow 新维护窗口
* @return 如果时间重叠返回true,否则返回false
*/
private
boolean
isTimeOverlap
(
List
<
MaintenanceWindow
>
existingWindows
,
MaintenanceWindow
newWindow
)
{
if
(
existingWindows
==
null
||
existingWindows
.
isEmpty
())
{
return
false
;
}
for
(
MaintenanceWindow
existingWindow
:
existingWindows
)
{
// 检查时间是否重叠:新窗口开始时间 < 现有窗口结束时间 && 新窗口结束时间 > 现有窗口开始时间
if
(
newWindow
.
getStartTime
().
isEqual
(
existingWindow
.
getEndTime
())
&&
newWindow
.
getEndTime
().
isEqual
(
existingWindow
.
getStartTime
()))
{
return
true
;
}
}
return
false
;
}
public
List
<
MaintenanceWindow
>
GetMaintenanceWindow
(
Chromosome
chromosome
,
Long
machineId
)
{
public
List
<
MaintenanceWindow
>
GetMaintenanceWindow
(
Chromosome
chromosome
,
Long
machineId
)
{
if
(
machineId
==
0
)
if
(
machineId
==
0
)
...
@@ -214,11 +240,15 @@ Integer newMachineId1=newMachineId.intValue();
...
@@ -214,11 +240,15 @@ Integer newMachineId1=newMachineId.intValue();
.
filter
(
i
->
maintenanceId
.
equals
(
maintenanceWindows
.
get
(
i
).
getId
()))
.
filter
(
i
->
maintenanceId
.
equals
(
maintenanceWindows
.
get
(
i
).
getId
()))
.
findFirst
();
.
findFirst
();
machine
.
getMaintenanceWindows
().
remove
(
index
);
if
(
index
.
isPresent
())
{
MachineSchedulerService
machineScheduler
=
new
MachineSchedulerService
(
machine
.
getMaintenanceWindows
().
remove
(
index
.
getAsInt
());
chromosome
.
getBaseTime
());
MachineSchedulerService
machineScheduler
=
new
MachineSchedulerService
(
MachineTimeline
machineTimeline
=
machineScheduler
.
getOrCreateTimeline
(
machine
);
chromosome
.
getBaseTime
());
machine
.
setAvailability
(
machineTimeline
.
getSegments
());
MachineTimeline
machineTimeline
=
machineScheduler
.
getOrCreateTimeline
(
machine
);
machine
.
setAvailability
(
machineTimeline
.
getSegments
());
}
else
{
throw
new
RuntimeException
(
"未找到维护窗口"
);
}
}
else
{
}
else
{
...
@@ -229,6 +259,43 @@ Integer newMachineId1=newMachineId.intValue();
...
@@ -229,6 +259,43 @@ Integer newMachineId1=newMachineId.intValue();
}
}
/**
* 批量删除维护窗口
* @param chromosome 染色体对象
* @param machineId 机器ID
* @param maintenanceIds 要删除的维护窗口ID列表
* @param globalParam 全局参数
*/
public
void
DelMaintenanceWindowBatch
(
Chromosome
chromosome
,
Long
machineId
,
List
<
String
>
maintenanceIds
,
GlobalParam
globalParam
)
{
Machine
machine
=
chromosome
.
getInitMachines
().
stream
().
filter
(
t
->
t
.
getId
()
==
machineId
)
.
findFirst
().
orElse
(
null
);
if
(
machine
!=
null
)
{
List
<
MaintenanceWindow
>
maintenanceWindows
=
machine
.
getMaintenanceWindows
();
if
(
maintenanceWindows
!=
null
&&
maintenanceIds
!=
null
&&
!
maintenanceIds
.
isEmpty
())
{
// 过滤出存在的维护窗口ID
List
<
String
>
existingIds
=
maintenanceIds
.
stream
()
.
filter
(
id
->
maintenanceWindows
.
stream
().
anyMatch
(
window
->
id
.
equals
(
window
.
getId
())))
.
collect
(
Collectors
.
toList
());
if
(
existingIds
.
size
()
!=
maintenanceIds
.
size
())
{
throw
new
RuntimeException
(
"部分维护窗口未找到"
);
}
// 根据ID批量删除维护窗口
maintenanceWindows
.
removeIf
(
window
->
maintenanceIds
.
contains
(
window
.
getId
()));
MachineSchedulerService
machineScheduler
=
new
MachineSchedulerService
(
chromosome
.
getBaseTime
());
MachineTimeline
machineTimeline
=
machineScheduler
.
getOrCreateTimeline
(
machine
);
machine
.
setAvailability
(
machineTimeline
.
getSegments
());
}
}
else
{
throw
new
RuntimeException
(
"未找到设备"
);
}
redecode
(
chromosome
,
chromosome
.
getBaseTime
(),
globalParam
);
}
public
void
SpiltOperation
(
Chromosome
chromosome
,
int
opId
,
Double
[]
splitCounts
,
GlobalParam
globalParam
)
public
void
SpiltOperation
(
Chromosome
chromosome
,
int
opId
,
Double
[]
splitCounts
,
GlobalParam
globalParam
)
{
{
List
<
Entry
>
allOperations
=
chromosome
.
getAllOperations
();
List
<
Entry
>
allOperations
=
chromosome
.
getAllOperations
();
...
...
src/main/java/com/aps/service/OrderMaterialRequirementService.java
0 → 100644
View file @
c8e8eeea
package
com
.
aps
.
service
;
import
com.aps.entity.Algorithm.OrderMaterialRequirement
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* <p>
* 订单物料需求表 服务类
* </p>
*
* @author MyBatis-Plus
* @since 2026-01-05
*/
public
interface
OrderMaterialRequirementService
extends
IService
<
OrderMaterialRequirement
>
{
}
src/main/java/com/aps/service/impl/LanuchServiceImpl.java
View file @
c8e8eeea
...
@@ -6,6 +6,7 @@ import com.aps.common.util.SnowFlackIdWorker;
...
@@ -6,6 +6,7 @@ import com.aps.common.util.SnowFlackIdWorker;
import
com.aps.entity.*
;
import
com.aps.entity.*
;
import
com.aps.entity.Algorithm.Chromosome
;
import
com.aps.entity.Algorithm.Chromosome
;
import
com.aps.entity.Algorithm.GAScheduleResult
;
import
com.aps.entity.Algorithm.GAScheduleResult
;
import
com.aps.entity.Algorithm.OrderMaterialRequirement
;
import
com.aps.entity.basic.Entry
;
import
com.aps.entity.basic.Entry
;
import
com.aps.entity.basic.Order
;
import
com.aps.entity.basic.Order
;
import
com.aps.mapper.RoutingDetailMapper
;
import
com.aps.mapper.RoutingDetailMapper
;
...
@@ -85,6 +86,9 @@ public class LanuchServiceImpl implements LanuchService {
...
@@ -85,6 +86,9 @@ public class LanuchServiceImpl implements LanuchService {
Equiptype1Service
equiptype1Service
;
Equiptype1Service
equiptype1Service
;
@Autowired
@Autowired
PlanResourceService
planResourceService
;
PlanResourceService
planResourceService
;
@Autowired
OrderMaterialRequirementService
orderMaterialRequirementService
;
/**
/**
* 生成场景数据
* 生成场景数据
*
*
...
@@ -246,7 +250,7 @@ public class LanuchServiceImpl implements LanuchService {
...
@@ -246,7 +250,7 @@ public class LanuchServiceImpl implements LanuchService {
mesOrder
.
setTaskType
(
prodLaunchOrder
.
getFinishOrderId
()
!=
null
?
"半成品"
:
"成品"
);
mesOrder
.
setTaskType
(
prodLaunchOrder
.
getFinishOrderId
()
!=
null
?
"半成品"
:
"成品"
);
mesOrderList
.
add
(
mesOrder
);
mesOrderList
.
add
(
mesOrder
);
}
}
mesOrderService
.
remove
(
new
LambdaQueryWrapper
<>());
boolean
saved
=
mesOrderService
.
saveBatch
(
mesOrderList
);
boolean
saved
=
mesOrderService
.
saveBatch
(
mesOrderList
);
if
(
saved
)
{
if
(
saved
)
{
...
@@ -288,14 +292,27 @@ public class LanuchServiceImpl implements LanuchService {
...
@@ -288,14 +292,27 @@ public class LanuchServiceImpl implements LanuchService {
dispatches
.
add
(
dispatch
);
dispatches
.
add
(
dispatch
);
}
}
dispatchService
.
remove
(
new
LambdaQueryWrapper
<>());
// 批量保存到数据库
// 批量保存到数据库
boolean
savedDispatch
=
dispatchService
.
saveOrUpdateBatch
(
dispatches
);
boolean
savedDispatch
=
dispatchService
.
saveOrUpdateBatch
(
dispatches
);
List
<
OrderMaterialRequirement
>
orderMaterials
=
chromosome
.
getOrderMaterials
();
// 先删除表中所有数据
orderMaterialRequirementService
.
remove
(
new
LambdaQueryWrapper
<>());
// 再批量插入新数据
orderMaterialRequirementService
.
saveBatch
(
orderMaterials
);
if
(
savedDispatch
)
{
if
(
savedDispatch
)
{
return
R
.
ok
(
"计划下发成功,共处理 "
+
dispatches
.
size
()
+
" 条记录"
);
return
R
.
ok
(
"计划下发成功,共处理 "
+
dispatches
.
size
()
+
" 条记录"
);
}
else
{
}
else
{
throw
new
RuntimeException
(
"保存到数据库失败"
);
throw
new
RuntimeException
(
"保存到数据库失败"
);
}
}
}
}
/**
/**
...
...
src/main/java/com/aps/service/impl/OrderMaterialRequirementServiceImpl.java
0 → 100644
View file @
c8e8eeea
package
com
.
aps
.
service
.
impl
;
import
com.aps.entity.Algorithm.OrderMaterialRequirement
;
import
com.aps.entity.ProdLaunchOrder
;
import
com.aps.mapper.OrderMaterialRequirementMapper
;
import
com.aps.mapper.ProdLaunchOrderMapper
;
import
com.aps.service.OrderMaterialRequirementService
;
import
com.aps.service.ProdLaunchOrderService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 订单物料需求表 服务类
* </p>
*
* @author MyBatis-Plus
* @since 2026-01-05
*/
@Service
public
class
OrderMaterialRequirementServiceImpl
extends
ServiceImpl
<
OrderMaterialRequirementMapper
,
OrderMaterialRequirement
>
implements
OrderMaterialRequirementService
{
}
src/main/java/com/aps/service/plan/PlanResultService.java
View file @
c8e8eeea
...
@@ -558,6 +558,19 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
...
@@ -558,6 +558,19 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
return
chromosome
;
return
chromosome
;
}
}
public
Chromosome
DelMaintenanceWindowBatch
(
String
SceneId
,
Long
machineId
,
List
<
String
>
maintenanceIds
)
{
GlobalParam
globalParam
=
new
GlobalParam
();
Chromosome
chromosome
=
_sceneService
.
loadChromosomeFromFile
(
SceneId
);
ScheduleOperationService
ScheduleOperation
=
new
ScheduleOperationService
();
ScheduleOperation
.
DelMaintenanceWindowBatch
(
chromosome
,
machineId
,
maintenanceIds
,
globalParam
);
// WriteScheduleSummary(chromosome);
_sceneService
.
saveChromosomeToFile
(
chromosome
,
SceneId
);
return
chromosome
;
}
public
List
<
MaintenanceWindow
>
GetMaintenanceWindow
(
String
SceneId
,
Long
machineId
,
MaintenanceWindow
maintenanceWindow
)
{
public
List
<
MaintenanceWindow
>
GetMaintenanceWindow
(
String
SceneId
,
Long
machineId
,
MaintenanceWindow
maintenanceWindow
)
{
...
@@ -1504,7 +1517,7 @@ private GlobalParam InitGlobalParam()
...
@@ -1504,7 +1517,7 @@ private GlobalParam InitGlobalParam()
taskVO
.
setSetup
(
gene
.
getPreTime
());
taskVO
.
setSetup
(
gene
.
getPreTime
());
taskVO
.
setTeardown
(
gene
.
getTeardownTime
());
// 默认值
taskVO
.
setTeardown
(
gene
.
getTeardownTime
());
// 默认值
taskVO
.
setEquipChange
(
gene
.
getChangeOverTime
());
// 默认值
taskVO
.
setEquipChange
(
gene
.
getChangeOverTime
());
// 默认值
taskVO
.
setEquipCooling
(
888
);
// 默认值
taskVO
.
setEquipCooling
(
0
);
// 默认值
taskVO
.
setEquipType
(
resourceGanttVO
.
getType
());
taskVO
.
setEquipType
(
resourceGanttVO
.
getType
());
taskVO
.
setEquipName
(
resourceGanttVO
.
getName
());
taskVO
.
setEquipName
(
resourceGanttVO
.
getName
());
taskVO
.
setLocked
(
gene
.
isIsLocked
());
// 默认值
taskVO
.
setLocked
(
gene
.
isIsLocked
());
// 默认值
...
@@ -1517,7 +1530,7 @@ private GlobalParam InitGlobalParam()
...
@@ -1517,7 +1530,7 @@ private GlobalParam InitGlobalParam()
// scheduleChromosome.getBaseTime().plusMinutes(gene.getStartTime()),
// scheduleChromosome.getBaseTime().plusMinutes(gene.getStartTime()),
// scheduleChromosome.getBaseTime().plusMinutes(gene.getEndTime()))); // 计算持续时间
// scheduleChromosome.getBaseTime().plusMinutes(gene.getEndTime()))); // 计算持续时间
taskVO
.
setDuration
(
888
);
//
taskVO
.
setDuration
(
0
);
//
taskVO
.
setEquipId
(
machine
.
getId
());
taskVO
.
setEquipId
(
machine
.
getId
());
taskVO
.
setShopId
(
machine
.
getId
());
taskVO
.
setShopId
(
machine
.
getId
());
taskVO
.
setShopName
(
resourceGanttVO
.
getShopName
());
taskVO
.
setShopName
(
resourceGanttVO
.
getShopName
());
...
@@ -1721,7 +1734,7 @@ private GlobalParam InitGlobalParam()
...
@@ -1721,7 +1734,7 @@ private GlobalParam InitGlobalParam()
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
for
(
EquipMaintainTask
equipMaintainTask
:
EquipMaintainTasks1
)
{
for
(
EquipMaintainTask
equipMaintainTask
:
EquipMaintainTasks1
)
{
MaintenanceWindow
maintenanceWindow
=
new
MaintenanceWindow
();
MaintenanceWindow
maintenanceWindow
=
new
MaintenanceWindow
();
maintenanceWindow
.
setId
(
equipMaintainTask
.
getId
().
toString
());
maintenanceWindow
.
setId
(
UUID
.
randomUUID
().
toString
());
maintenanceWindow
.
setStartTime
(
equipMaintainTask
.
getPlanStartTime
());
maintenanceWindow
.
setStartTime
(
equipMaintainTask
.
getPlanStartTime
());
maintenanceWindow
.
setEndTime
(
equipMaintainTask
.
getPlanFinishTime
());
maintenanceWindow
.
setEndTime
(
equipMaintainTask
.
getPlanFinishTime
());
maintenanceWindow
.
setReason
(
""
);
maintenanceWindow
.
setReason
(
""
);
...
...
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