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
45635332
Commit
45635332
authored
Nov 27, 2025
by
DESKTOP-VKRD9QF\Administration
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化启动流程
parent
8c0d97a7
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
202 additions
and
81 deletions
+202
-81
LanuchController.java
src/main/java/com/aps/controller/LanuchController.java
+36
-0
ProdLaunchOrder.java
src/main/java/com/aps/entity/ProdLaunchOrder.java
+1
-1
ProdOrderProcess.java
src/main/java/com/aps/entity/ProdOrderProcess.java
+2
-2
ProdProcessExec.java
src/main/java/com/aps/entity/ProdProcessExec.java
+42
-4
RoutingDetail.java
src/main/java/com/aps/entity/RoutingDetail.java
+48
-41
LanuchService.java
src/main/java/com/aps/service/LanuchService.java
+1
-1
LanuchServiceImpl.java
src/main/java/com/aps/service/impl/LanuchServiceImpl.java
+71
-31
ProdEquipSpecialCalServiceImpl.java
.../com/aps/service/impl/ProdEquipSpecialCalServiceImpl.java
+1
-1
No files found.
src/main/java/com/aps/controller/LanuchController.java
0 → 100644
View file @
45635332
package
com
.
aps
.
controller
;
import
com.aps.common.util.R
;
import
com.aps.service.LanuchService
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
@RestController
@RequestMapping
(
"/lanuch"
)
@Tag
(
name
=
"启动工单"
,
description
=
"启动工单接口"
)
public
class
LanuchController
{
@Autowired
private
LanuchService
lanuchService
;
/**
* 启动工单
*
* @param sceneName 场景名称
* @param username 用户名
* @return 处理结果
*/
@PostMapping
(
"/execute"
)
public
R
<
String
>
lanuch
(
@RequestParam
String
sceneName
,
@RequestHeader
(
required
=
false
)
String
username
)
{
if
(
username
==
null
||
username
.
isEmpty
())
{
username
=
"system"
;
}
return
lanuchService
.
lanuch
(
sceneName
,
username
);
}
}
\ No newline at end of file
src/main/java/com/aps/entity/ProdLaunchOrder.java
View file @
45635332
...
...
@@ -23,7 +23,7 @@ public class ProdLaunchOrder {
private
LocalDateTime
startDate
;
private
LocalDateTime
endDate
;
private
String
orderDesc
;
private
String
orderPriority
;
private
Integer
orderPriority
;
private
String
groupCode
;
private
String
colorCode
;
private
BigDecimal
quantity
;
...
...
src/main/java/com/aps/entity/ProdOrderProcess.java
View file @
45635332
...
...
@@ -6,7 +6,7 @@ import lombok.Data;
public
class
ProdOrderProcess
{
private
String
sceneId
;
private
String
orderId
;
private
String
processNo
;
private
String
taskSeq
;
private
String
targetOrderId
;
private
String
target
ProcessNo
;
private
String
target
TaskSeq
;
}
\ No newline at end of file
src/main/java/com/aps/entity/ProdProcessExec.java
View file @
45635332
...
...
@@ -10,10 +10,10 @@ public class ProdProcessExec {
private
String
execId
;
private
String
sceneId
;
private
String
orderId
;
private
String
process
Id
;
private
String
processNo
;
private
String
process
Name
;
private
Stri
ng
machineId
;
private
String
routingDetail
Id
;
private
String
taskSeq
;
private
String
routingDetail
Name
;
private
Lo
ng
machineId
;
private
String
resourceGroup
;
private
BigDecimal
planQty
;
private
BigDecimal
actualQty
;
...
...
@@ -29,4 +29,42 @@ private Long changeDuration;
private
Short
logicalOrder
;
private
LocalDateTime
targetStartDate
;
private
LocalDateTime
targetEndDate
;
/**
* 工序准备工时(小时)
* 注释: 工序准备工时
*/
private
BigDecimal
setupTime
;
/**
* 换线时间(小时)
* 注释: 换线时间
*/
private
BigDecimal
changeLineTime
;
/**
* 常数时间
* 注释: 常数时间
*/
private
BigDecimal
constTime
;
/**
* 前处理时间(秒)
* 注释: 前处理时间(秒)
*/
private
Long
preprocessingTime
;
/**
* 后处理时间(秒)
* 注释: 后处理时间(秒)
*/
private
Long
postprocessingTime
;
//速度
private
BigDecimal
speed
;
}
\ No newline at end of file
src/main/java/com/aps/entity/RoutingDetail.java
View file @
45635332
package
com
.
aps
.
entity
;
import
lombok.Data
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDate
;
import
java.time.LocalDate
Time
;
@Data
public
class
RoutingDetail
{
private
Integer
id
;
private
LocalDate
creationTime
;
private
Long
creatorUserId
;
private
LocalDate
lastModificationTime
;
private
Long
lastModifierUserId
;
private
Boolean
isDeleted
;
private
Long
deleterUserId
;
private
LocalDate
deletionTime
;
private
Integer
classId
;
private
Integer
routingHeaderId
;
private
LocalDate
Time
creationTime
;
private
BigDecimal
creatorUserId
;
private
LocalDate
Time
lastModificationTime
;
private
BigDecimal
lastModifierUserId
;
private
Short
isDeleted
;
private
BigDecimal
deleterUserId
;
private
LocalDate
Time
deletionTime
;
private
Long
classId
;
private
Long
routingHeaderId
;
private
String
name
;
private
BigDecimal
taskSeq
;
private
Short
taskSeq
;
private
String
description
;
private
String
taskContent
;
private
Integer
resourceId
;
private
Long
resourceId
;
private
Short
resourceType
;
private
BigDecimal
runtime
;
private
BigDecimal
setupTime
;
private
BigDecimal
transportTime
;
private
BigDecimal
checkTime
;
private
BigDecimal
setupTime
;
private
BigDecimal
transportTime
;
private
Short
checkTime
;
private
Short
checkFlag
;
private
BigDecimal
efficiencyValue
;
private
Short
efficiencyValue
;
private
BigDecimal
singleOut
;
private
Short
isOutside
;
private
Integer
departmentId
;
private
Long
departmentId
;
private
Short
isImportant
;
private
Integer
milestoneId
;
private
Integer
phaseId
;
private
Long
milestoneId
;
private
Long
phaseId
;
private
Short
status
;
private
String
remark
;
private
String
extend
;
private
BigDecimal
outsideTime
;
private
BigDecimal
performanceHours
;
private
Short
outsideTime
;
private
Short
performanceHours
;
private
String
resourceCode
;
private
Integer
isImportantResources
;
private
BigDecimal
schedulingWorkingHours
;
private
BigDecimal
realWorkingHours
;
private
BigDecimal
realRuntime
;
private
BigDecimal
performanceWorkingHours
;
private
Integer
isParticipateIntime
;
private
Short
isImportantResources
;
private
Short
schedulingWorkingHours
;
private
Short
realWorkingHours
;
private
Short
realRuntime
;
private
Short
performanceWorkingHours
;
private
Short
isParticipateIntime
;
private
String
equipType
;
private
Integer
equipTypeId
;
private
Long
equipTypeId
;
private
String
note
;
private
String
fileId
;
private
Integer
measureUnit
;
private
Long
measureUnit
;
private
String
measureUnitName
;
private
BigDecimal
afterProcessTime
;
private
Integer
isGeneral
;
private
Integer
canInterrupt
;
private
Integer
canStartEarly
;
private
BigDecimal
previousStartTimeBegin
;
private
Short
afterProcessTime
;
private
Long
isGeneral
;
private
Long
canInterrupt
;
private
Long
canStartEarly
;
private
Short
previousStartTimeBegin
;
private
String
code
;
private
String
tool
;
private
BigDecimal
changeLineTime
;
private
Integer
preDetailId
;
private
Integer
connectType
;
private
Integer
connectProperty
;
private
BigDecimal
changeLineTime
;
private
Long
preDetailId
;
private
Long
connectType
;
private
Long
connectProperty
;
private
String
connectTypeName
;
private
String
connectPropertyName
;
private
String
strSetupTime
;
...
...
@@ -74,4 +72,13 @@ private Long isync;
private
BigDecimal
constTime
;
private
String
usable
;
private
BigDecimal
leadTime
;
}
private
BigDecimal
batchQty
;
private
BigDecimal
minProductionQty
;
private
BigDecimal
maxProductionQty
;
private
BigDecimal
productionTakt
;
private
Long
preprocessingTime
;
private
Long
postprocessingTime
;
private
BigDecimal
splitMinQty
;
private
BigDecimal
splitMaxQty
;
private
Short
equipmentConnectivity
;
}
\ No newline at end of file
src/main/java/com/aps/service/LanuchService.java
View file @
45635332
...
...
@@ -15,5 +15,5 @@ public interface LanuchService {
* @author: jdt
* @return 结果
*/
R
<
String
>
lanuch
(
List
<
String
>
prodOrderMainIds
,
String
sceneId
,
String
username
);
R
<
String
>
lanuch
(
String
sceneId
,
String
username
);
}
\ No newline at end of file
src/main/java/com/aps/service/impl/LanuchServiceImpl.java
View file @
45635332
...
...
@@ -14,11 +14,13 @@ import org.springframework.transaction.annotation.Transactional;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
...
...
@@ -57,23 +59,21 @@ public class LanuchServiceImpl implements LanuchService {
/**
* 生成场景数据
*
*
@param prodOrderMainIds 工单ID列表
*
* @param sceneName 场景名称
* @param username 操作用户
* @return 处理结果
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
R
<
String
>
lanuch
(
List
<
String
>
prodOrderMainIds
,
String
sceneName
,
String
username
)
{
public
R
<
String
>
lanuch
(
String
sceneName
,
String
username
)
{
try
{
// 参数校验
if
(
sceneName
==
null
||
sceneName
.
trim
().
isEmpty
())
{
return
R
.
failed
(
"场景名称不能为空"
);
}
if
(
CollectionUtils
.
isEmpty
(
prodOrderMainIds
))
{
return
R
.
failed
(
"工单ID列表不能为空"
);
}
// 1. 创建场景
String
sceneId
=
createScene
(
sceneName
);
...
...
@@ -82,8 +82,14 @@ public class LanuchServiceImpl implements LanuchService {
}
prodEquipSpecialCalService
.
copyFromEquipCapacityDef
(
sceneId
);
List
<
ApsOrder
>
apsOrders
=
apsOrderService
.
list
();
List
<
ApsOrder
>
apsOrders
=
apsOrderService
.
lambdaQuery
()
.
eq
(
ApsOrder:
:
getIsdeleted
,
0
)
.
like
(
ApsOrder:
:
getCode
,
"佟礼测试数据"
)
.
list
();
if
(
CollectionUtils
.
isEmpty
(
apsOrders
))
{
return
R
.
failed
(
"工单列表不能为空"
);
}
// 4. 处理订单数据转换
List
<
ProdLaunchOrder
>
prodLaunchOrders
=
processOrderData
(
sceneId
,
apsOrders
);
...
...
@@ -120,10 +126,19 @@ public class LanuchServiceImpl implements LanuchService {
.
filter
(
Objects:
:
nonNull
)
.
collect
(
Collectors
.
toList
());
// 批量保存
if
(!
CollectionUtils
.
isEmpty
(
launchOrderList
))
{
prodLaunchOrderService
.
saveBatch
(
launchOrderList
);
log
.
info
(
"批量插入{}条ProdLaunchOrder记录"
,
launchOrderList
.
size
());
// 在您的 LanuchServiceImpl 中修改这一行:
// 原来的问题代码:
// prodLaunchOrderService.saveBatch(launchOrders);
// 修改为:
if
(!
launchOrderList
.
isEmpty
())
{
for
(
ProdLaunchOrder
order
:
launchOrderList
)
{
try
{
prodLaunchOrderService
.
save
(
order
);
// 单条插入
}
catch
(
Exception
e
)
{
log
.
error
(
"保存订单失败: {}"
,
order
.
getOrderId
(),
e
);
}
}
}
...
...
@@ -142,26 +157,33 @@ public class LanuchServiceImpl implements LanuchService {
private
ProdLaunchOrder
convertToLaunchOrder
(
ApsOrder
order
,
String
sceneId
)
{
try
{
ProdLaunchOrder
launchOrder
=
new
ProdLaunchOrder
();
launchOrder
.
setOrderId
(
order
.
getId
());
launchOrder
.
setSceneId
(
sceneId
);
launchOrder
.
setSerie
(
order
.
getSeries
());
launchOrder
.
setCreateUser
(
String
.
valueOf
(
order
.
getCreatoruserid
()));
launchOrder
.
setMaterialCode
(
order
.
getMmcode
());
// launchOrder.setStartDate(order.get);
launchOrder
.
setEndDate
(
order
.
getDeliverytime
());
// launchOrder.setOrderPriority(order.getPrioritry());
launchOrder
.
setOrderPriority
(
1
);
launchOrder
.
setQuantity
(
order
.
getQuantity
());
launchOrder
.
setMaterialId
(
order
.
getMmid
());
String
mmid
=
order
.
getMmid
();
// 通过mmid查找对应的工艺
if
(
mmid
!=
null
&&
!
mmid
.
isEmpty
())
{
LambdaQueryWrapper
<
RoutingHeader
>
routingWrapper
=
new
LambdaQueryWrapper
<>();
routingWrapper
.
eq
(
RoutingHeader:
:
getMaterialId
,
mmid
);
RoutingHeader
routingHeader
=
routingHeaderService
.
getOne
(
routingWrapper
);
routingWrapper
.
eq
(
RoutingHeader:
:
getIsDeleted
,
0
);
// 添加判断 is_deleted=0
List
<
RoutingHeader
>
routingHeaders
=
routingHeaderService
.
list
(
routingWrapper
);
RoutingHeader
routingHeader
=
null
;
if
(!
CollectionUtils
.
isEmpty
(
routingHeaders
))
{
routingHeader
=
routingHeaders
.
get
(
0
);
}
if
(
routingHeader
!=
null
)
{
launchOrder
.
setRoutingId
(
routingHeader
.
getId
().
toString
());
launchOrder
.
setRoutingCode
(
defaultIfBlank
(
routingHeader
.
getCode
(),
""
));
launchOrder
.
setOrderId
(
order
.
getId
());
launchOrder
.
setSceneId
(
sceneId
);
launchOrder
.
setSerie
(
order
.
getSeries
());
launchOrder
.
setCreateUser
(
String
.
valueOf
(
order
.
getCreatoruserid
()));
launchOrder
.
setMaterialCode
(
order
.
getMmcode
());
// launchOrder.setStartDate(order.get);
launchOrder
.
setEndDate
(
order
.
getDeliverytime
());
launchOrder
.
setOrderPriority
(
order
.
getPrioritry
());
launchOrder
.
setQuantity
(
order
.
getQuantity
());
launchOrder
.
setMaterialId
(
order
.
getMmid
());
}
}
...
...
@@ -356,6 +378,7 @@ public class LanuchServiceImpl implements LanuchService {
RoutingHeader
routingHeader
=
getRoutingHeader
(
prodOrderMain
.
getRoutingId
());
// 查询该工艺下的所有工序
List
<
RoutingDetail
>
routingDetails
=
getRoutingDetails
(
routingHeader
.
getId
());
...
...
@@ -375,7 +398,8 @@ public class LanuchServiceImpl implements LanuchService {
*/
private
RoutingHeader
getRoutingHeader
(
String
routingId
)
{
LambdaQueryWrapper
<
RoutingHeader
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
RoutingHeader:
:
getId
,
routingId
);
wrapper
.
eq
(
RoutingHeader:
:
getId
,
routingId
)
.
eq
(
RoutingHeader:
:
getIsDeleted
,
0
);
// 添加 is_deleted=0 过滤条件
RoutingHeader
routingHeader
=
routingHeaderMapper
.
selectOne
(
wrapper
);
if
(
routingHeader
==
null
)
{
...
...
@@ -395,6 +419,7 @@ public class LanuchServiceImpl implements LanuchService {
private
List
<
RoutingDetail
>
getRoutingDetails
(
Integer
routingHeaderId
)
{
LambdaQueryWrapper
<
RoutingDetail
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
RoutingDetail:
:
getRoutingHeaderId
,
routingHeaderId
)
.
eq
(
RoutingDetail:
:
getIsDeleted
,
0
)
// 添加 is_deleted=0 过滤条件
.
orderByAsc
(
RoutingDetail:
:
getTaskSeq
);
List
<
RoutingDetail
>
routingDetails
=
routingDetailMapper
.
selectList
(
wrapper
);
...
...
@@ -442,16 +467,30 @@ public class LanuchServiceImpl implements LanuchService {
ProdProcessExec
prodProcessExec
=
new
ProdProcessExec
();
prodProcessExec
.
setExecId
(
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
));
prodProcessExec
.
setOrderId
(
prodOrderMain
.
getOrderId
());
prodProcessExec
.
set
Process
Id
(
String
.
valueOf
(
detail
.
getId
()));
prodProcessExec
.
set
ProcessNo
(
String
.
valueOf
(
detail
.
getTaskSeq
()));
prodProcessExec
.
set
Process
Name
(
detail
.
getName
());
prodProcessExec
.
setMachineId
(
detail
.
get
ResourceCode
());
prodProcessExec
.
setResourceGroup
(
String
.
valueOf
(
detail
.
getResourceId
()));
prodProcessExec
.
set
RoutingDetail
Id
(
String
.
valueOf
(
detail
.
getId
()));
prodProcessExec
.
set
TaskSeq
(
String
.
valueOf
(
detail
.
getTaskSeq
()));
prodProcessExec
.
set
RoutingDetail
Name
(
detail
.
getName
());
prodProcessExec
.
setMachineId
(
detail
.
get
EquipTypeId
());
//
prodProcessExec.setResourceGroup(String.valueOf(detail.getResourceId()));
prodProcessExec
.
setPlanQty
(
prodOrderMain
.
getQuantity
());
prodProcessExec
.
setTargetStartDate
(
prodOrderMain
.
getStartDate
());
prodProcessExec
.
setTargetEndDate
(
prodOrderMain
.
getEndDate
());
prodProcessExec
.
setSceneId
(
sceneId
);
prodProcessExec
.
setSetupTime
(
detail
.
getSetupTime
());
prodProcessExec
.
setChangeLineTime
(
detail
.
getChangeLineTime
());
prodProcessExec
.
setConstTime
(
detail
.
getConstTime
());
prodProcessExec
.
setPreprocessingTime
(
detail
.
getPreprocessingTime
());
prodProcessExec
.
setPostprocessingTime
(
detail
.
getPostprocessingTime
());
prodProcessExec
.
setSpeed
(
Optional
.
ofNullable
(
detail
.
getSingleOut
())
.
filter
(
out
->
detail
.
getRuntime
()
!=
null
)
.
filter
(
out
->
detail
.
getRuntime
().
compareTo
(
BigDecimal
.
ZERO
)
!=
0
)
.
map
(
out
->
out
.
divide
(
detail
.
getRuntime
(),
4
,
RoundingMode
.
HALF_UP
))
.
orElse
(
BigDecimal
.
ZERO
)
);
System
.
out
.
println
(
prodProcessExec
.
getSpeed
());
return
prodProcessExec
;
}
...
...
@@ -512,7 +551,8 @@ public class LanuchServiceImpl implements LanuchService {
*/
private
List
<
ProdOrderProcess
>
createProcessRelations
(
ProdLaunchOrder
prodOrderMain
,
String
sceneId
)
{
LambdaQueryWrapper
<
RoutingDetailConnect
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
RoutingDetailConnect:
:
getRoutingHeaderId
,
prodOrderMain
.
getRoutingId
());
wrapper
.
eq
(
RoutingDetailConnect:
:
getRoutingHeaderId
,
prodOrderMain
.
getRoutingId
())
.
eq
(
RoutingDetailConnect:
:
getIsdeleted
,
0
);
// 添加 isdeleted=0 过滤条件
List
<
RoutingDetailConnect
>
connections
=
routingDetailConnectService
.
list
(
wrapper
);
...
...
@@ -535,9 +575,9 @@ public class LanuchServiceImpl implements LanuchService {
ProdOrderProcess
prodOrderProcess
=
new
ProdOrderProcess
();
prodOrderProcess
.
setSceneId
(
sceneId
);
prodOrderProcess
.
setOrderId
(
prodOrderMain
.
getOrderId
());
prodOrderProcess
.
set
ProcessNo
(
connection
.
getSourceoperation
());
prodOrderProcess
.
set
TaskSeq
(
connection
.
getSourceoperation
());
prodOrderProcess
.
setTargetOrderId
(
prodOrderMain
.
getOrderId
());
prodOrderProcess
.
setTarget
ProcessNo
(
connection
.
getDestoperation
());
prodOrderProcess
.
setTarget
TaskSeq
(
connection
.
getDestoperation
());
return
prodOrderProcess
;
}
...
...
src/main/java/com/aps/service/impl/ProdEquipSpecialCalServiceImpl.java
View file @
45635332
...
...
@@ -38,7 +38,7 @@ public class ProdEquipSpecialCalServiceImpl extends ServiceImpl<ProdEquipSpecial
// 过滤出is_deleted为0的记录
List
<
EquipCapacityDef
>
activeCapacityDefs
=
capacityDefs
.
stream
()
.
filter
(
e
->
e
.
getIsDeleted
()
!=
null
&&
e
.
getIsDeleted
()
==
0
)
.
filter
(
e
->
e
.
getIsDeleted
()
!=
null
&&
e
.
getIsDeleted
()
==
0
&&
e
.
getReferenceId
()
!=
null
)
.
collect
(
Collectors
.
toList
());
// 转换对象并设置必要字段
...
...
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