Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mini-wms
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
周海峰
mini-wms
Commits
1fdb55bc
Commit
1fdb55bc
authored
Dec 16, 2025
by
zhangtw
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
批次单号分组
parent
3238334f
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
30 行增加
和
8 行删除
+30
-8
ruoyi-admin-vue/src/views/inventory/inbound/index.vue
+1
-0
ruoyi-admin-vue/src/views/inventory/inbound_items/index.vue
+2
-0
ruoyi-inventory/src/main/java/com/ruoyi/inventory/service/impl/InboundOrdersServiceImpl.java
+27
-8
没有找到文件。
ruoyi-admin-vue/src/views/inventory/inbound/index.vue
View file @
1fdb55bc
...
...
@@ -612,6 +612,7 @@ export default {
getList
()
{
this
.
loading
=
true
listInbound
(
this
.
queryParams
).
then
(
response
=>
{
console
.
log
(
response
.
rows
)
this
.
inboundList
=
response
.
rows
this
.
total
=
response
.
total
this
.
loading
=
false
...
...
ruoyi-admin-vue/src/views/inventory/inbound_items/index.vue
View file @
1fdb55bc
...
...
@@ -498,6 +498,8 @@ export default {
if
(
!
inboundOrderId
)
return
this
.
loading
=
true
this
.
queryParams
.
inboundOrderId
=
inboundOrderId
// 重置分页页码,避免切换入库单时使用之前的分页位置
this
.
queryParams
.
pageNum
=
1
listInbound_itemsAndMname
(
this
.
queryParams
).
then
(
response
=>
{
this
.
displayData
=
response
.
rows
.
map
(
item
=>
({
...
item
,
...
...
ruoyi-inventory/src/main/java/com/ruoyi/inventory/service/impl/InboundOrdersServiceImpl.java
View file @
1fdb55bc
...
...
@@ -206,7 +206,7 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService
.
stream
()
.
filter
(
Objects:
:
nonNull
)
// 过滤null的VO对象
.
map
(
vo
->
{
// 预处理:
入库单号去空格,统一格式(反射调用get/setOrderId
)
// 预处理:
对入库单号和批次号去空格,统一格式(反射调用getter/setter
)
try
{
// 反射获取getOrderId方法
Method
getOrderIdMethod
=
vo
.
getClass
().
getMethod
(
"getOrderId"
);
...
...
@@ -214,9 +214,19 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService
.
map
(
Object:
:
toString
)
.
map
(
String:
:
trim
)
// 去除首尾空格
.
orElse
(
""
);
// 反射获取getBatchId方法
Method
getBatchId
=
vo
.
getClass
().
getMethod
(
"getBatchId"
);
String
batchId
=
Optional
.
ofNullable
(
getBatchId
.
invoke
(
vo
))
.
map
(
Object:
:
toString
)
.
map
(
String:
:
trim
)
.
orElse
(
""
);
// 反射调用setOrderId方法回写处理后的单号
Method
setOrderIdMethod
=
vo
.
getClass
().
getMethod
(
"setOrderId"
,
String
.
class
);
setOrderIdMethod
.
invoke
(
vo
,
orderId
);
// 反射调用setBatchId方法回写处理后的批次号
Method
setBatchIdMethod
=
vo
.
getClass
().
getMethod
(
"setBatchId"
,
String
.
class
);
setBatchIdMethod
.
invoke
(
vo
,
batchId
);
}
catch
(
Exception
e
)
{
throw
new
ServiceException
(
"实体类缺少orderId的getter/setter方法"
+
e
);
}
...
...
@@ -239,8 +249,13 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService
// 反射获取分组Key:处理后的入库单号
try
{
Method
getOrderIdMethod
=
vo
.
getClass
().
getMethod
(
"getOrderId"
);
Method
getBatchIdMethod
=
vo
.
getClass
().
getMethod
(
"getBatchId"
);
return
Optional
.
ofNullable
(
getOrderIdMethod
.
invoke
(
vo
))
.
map
(
Object:
:
toString
)
.
orElse
(
""
)
+
"--"
+
Optional
.
ofNullable
(
getBatchIdMethod
.
invoke
(
vo
))
.
map
(
Object:
:
toString
)
.
orElse
(
""
);
}
catch
(
Exception
e
)
{
throw
new
ServiceException
(
"分组获取orderId失败"
+
e
);
...
...
@@ -256,7 +271,9 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService
// 4. 遍历每个入库单分组处理
for
(
Map
.
Entry
<
String
,
List
<
T
>>
entry
:
orderGroupMap
.
entrySet
())
{
String
orderId
=
entry
.
getKey
();
String
orderKey
=
entry
.
getKey
();
String
orderId
=
orderKey
.
split
(
"--"
)[
0
];
String
batchId
=
orderKey
.
split
(
"--"
)[
1
];
List
<
T
>
voList
=
entry
.
getValue
();
InboundOrders
mainDO
=
null
;
List
<
InboundOrderItems
>
itemDOList
=
new
ArrayList
<>();
...
...
@@ -265,18 +282,21 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService
// 4.1 处理主表(每个入库单号只处理一次主表)
T
firstVO
=
voList
.
get
(
0
);
// 取第一条VO的主表信息
// 检查入库单是否已存在
InboundOrders
existMain
=
inboundOrdersMapper
.
selectInboundOrdersByOrderId
(
orderId
);
if
(
existMain
!=
null
)
{
InboundOrders
query
=
new
InboundOrders
();
query
.
setOrderId
(
orderId
);
query
.
setBatchId
(
batchId
);
List
<
InboundOrders
>
existMain
=
inboundOrdersMapper
.
selectInboundOrdersList
(
query
);
System
.
out
.
println
(
existMain
);
if
(
existMain
!=
null
&&
!
existMain
.
isEmpty
())
{
if
(
isUpdateSupport
==
0
)
{
// 不支持更新,跳过该入库单
totalMainFailure
++;
failureMsg
.
append
(
String
.
format
(
"入库单号【%s】已存在,且不支持更新,跳过导入;\n"
,
orderId
));
failureMsg
.
append
(
String
.
format
(
"
该批次的
入库单号【%s】已存在,且不支持更新,跳过导入;\n"
,
orderId
));
totalItemFailure
+=
voList
.
size
();
// 该单的明细全部失败
continue
;
}
// 支持更新,复用已有主表ID
mainDO
=
existMain
;
mainDO
=
existMain
.
get
(
0
)
;
// 反射复制VO中的主表字段到已有主表(只更新可修改的字段)
BeanUtils
.
copyProperties
(
firstVO
,
mainDO
,
"id"
,
"createBy"
,
"createTime"
);
// 排除不可更新字段
mainDO
.
setUpdateBy
(
operId
);
...
...
@@ -349,7 +369,6 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService
itemDO
.
setOrderId
(
orderId
);
// 关联入库单号
// 反射获取batchId并设置
String
batchId
=
""
;
try
{
Method
getBatchIdMethod
=
vo
.
getClass
().
getMethod
(
"getBatchId"
);
batchId
=
Optional
.
ofNullable
(
getBatchIdMethod
.
invoke
(
vo
))
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论