Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 07f32fda
由
zshaohui
编写于
2025-09-16 13:26:58 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.工单出库 逻辑优化
1 个父辈
98ddbcd9
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
31 行增加
和
7 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
07f32fd
...
...
@@ -948,6 +948,19 @@ public class LiteOrderCache {
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
//可用料仓
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
//提取到所有的partNumber
List
<
String
>
partNumberList
=
new
ArrayList
<>();
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
partNumberList
.
add
(
orderItem
.
getPn
());
}
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
List
<
StoragePos
>
allPnPosList
=
storagePosManager
.
findAllPartNumberInStorages
(
availableStorageIds
,
partNumberList
,
excludePosIds
,
checkoutType
);
if
(
allPnPosList
==
null
){
allPnPosList
=
new
ArrayList
<>();
}
//开始循环处理数据
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
...
...
@@ -973,10 +986,8 @@ public class LiteOrderCache {
int
countTask
=
0
;
if
(
remainNum
>
0
||
remainReelCount
>
0
)
{
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
//查询
List
<
StoragePos
>
allPosList
=
storagePosManager
.
findAllPartNumberInStorages
(
availableStorageIds
,
orderItem
.
getPn
(),
excludePosIds
,
checkoutType
);
List
<
StoragePos
>
allPosList
=
getPosListByPn
(
allPnPosList
,
orderItem
.
getPn
()
);
if
(
allPosList
==
null
){
allPosList
=
new
ArrayList
<>();
}
...
...
@@ -1182,4 +1193,17 @@ public class LiteOrderCache {
}
return
""
;
}
private
List
<
StoragePos
>
getPosListByPn
(
List
<
StoragePos
>
allPnPosList
,
String
pn
)
{
List
<
StoragePos
>
storagePosList
=
new
ArrayList
<>();
for
(
StoragePos
pos
:
allPnPosList
)
{
Barcode
barcode
=
pos
.
getBarcode
();
if
(
barcode
!=
null
){
if
(
barcode
.
getPartNumber
().
equals
(
pn
)){
storagePosList
.
add
(
pos
);
}
}
}
return
storagePosList
;
}
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
查看文件 @
07f32fd
...
...
@@ -104,5 +104,5 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
int
getRemainPosCountByStorage
(
Storage
storage
,
Barcode
barcode
,
Collection
<
String
>
excludePosIds
,
String
lastPosId
,
String
endStr
)
throws
ValidateException
;
List
<
StoragePos
>
findAllPartNumberInStorages
(
List
<
String
>
availableStorageIds
,
String
pn
,
Collection
<
String
>
excludePosIds
,
CHECKOUT_TYPE
checkoutType
);
List
<
StoragePos
>
findAllPartNumberInStorages
(
List
<
String
>
availableStorageIds
,
List
<
String
>
pnList
,
Collection
<
String
>
excludePosIds
,
CHECKOUT_TYPE
checkoutType
);
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
07f32fd
...
...
@@ -936,8 +936,8 @@ public class StoragePosManagerImpl implements IStoragePosManager {
}
@Override
public
List
<
StoragePos
>
findAllPartNumberInStorages
(
List
<
String
>
storageIdList
,
String
pn
,
Collection
<
String
>
excludePosIds
,
CHECKOUT_TYPE
checkOutType
)
{
Criteria
c
=
Criteria
.
where
(
"barcode.partNumber"
).
i
s
(
pn
)
public
List
<
StoragePos
>
findAllPartNumberInStorages
(
List
<
String
>
storageIdList
,
List
<
String
>
pnList
,
Collection
<
String
>
excludePosIds
,
CHECKOUT_TYPE
checkOutType
)
{
Criteria
c
=
Criteria
.
where
(
"barcode.partNumber"
).
i
n
(
pnList
)
.
and
(
"id"
).
nin
(
excludePosIds
)
.
and
(
"enabled"
).
is
(
true
)
//可用
.
and
(
"barcode.lockId"
).
is
(
null
);
//没有被锁定的仓位;
...
...
@@ -949,7 +949,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
q
.
with
(
sort
);
List
<
StoragePos
>
list
=
storagePosDao
.
findByQuery
(
q
);
if
(
list
==
null
||
list
.
isEmpty
())
{
log
.
info
(
"使用"
+
checkOutType
+
" 策略出库 partNumber="
+
pn
+
",未找到可以出库的物料 "
);
//
log.info("使用" + checkOutType + " 策略出库 partNumber=" + pn + ",未找到可以出库的物料 ");
}
return
list
;
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论