Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 006361a0
由
zshaohui
编写于
2025-07-23 16:27:22 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.排序问题修改
1 个父辈
102bc5b0
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
56 行增加
和
30 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
006361a
...
...
@@ -534,7 +534,7 @@ public class LiteOrderCache {
Barcode
subCode
=
barcode
.
getSubCodeByBarcode
(
ri
);
if
(
subCode
!=
null
)
{
log
.
info
(
subCode
.
getBarcode
()
+
"对应的料箱为:"
+
barcode
.
getBarcode
()
+
",需要进行标记,进行出库,工单为:"
+
orderNo
);
subCode
=
updateSubCodeAppendData
(
cacheOrder
,
orderItem
,
subCode
);
subCode
=
updateSubCodeAppendData
(
cacheOrder
,
orderItem
,
subCode
,
subCode
.
getAmount
()
);
//同时更新barcode和库位信息
barcode
.
UpdateSubCode
(
subCode
);
...
...
@@ -584,7 +584,14 @@ public class LiteOrderCache {
Barcode
subCode
=
posBarcode
.
getSubCodeByBarcode
(
barcode
.
getBarcode
());
if
(
subCode
!=
null
)
{
log
.
info
(
subCode
.
getBarcode
()
+
"对应的料箱为:"
+
posBarcode
.
getBarcode
()
+
",需要进行标记,进行出库,工单为:"
+
orderNo
);
subCode
=
updateSubCodeAppendData
(
cacheOrder
,
orderItem
,
subCode
);
int
needOutNum
=
remainNum
-
assignNum
;
if
(
subCode
.
getAmount
()
-
needOutNum
>
0
){
subCode
=
updateSubCodeAppendData
(
cacheOrder
,
orderItem
,
subCode
,
needOutNum
);
assignNum
=
assignNum
+
needOutNum
;
}
else
{
subCode
=
updateSubCodeAppendData
(
cacheOrder
,
orderItem
,
subCode
,
subCode
.
getAmount
());
assignNum
=
assignNum
+
subCode
.
getAmount
();
}
//同时更新barcode和库位信息
posBarcode
.
UpdateSubCode
(
subCode
);
barcodeManager
.
save
(
subCode
);
...
...
@@ -595,7 +602,6 @@ public class LiteOrderCache {
needOutPosId
.
add
(
pos
.
getId
());
assignReelCount
=
assignReelCount
+
1
;
taskReelCount
=
taskReelCount
+
1
;
assignNum
=
assignNum
+
subCode
.
getAmount
();
}
}
}
...
...
@@ -627,7 +633,14 @@ public class LiteOrderCache {
Barcode
subCode
=
posBarcode
.
getSubCodeByMpn
(
barcode
.
getMpn
());
if
(
subCode
!=
null
)
{
log
.
info
(
subCode
.
getBarcode
()
+
"对应的料箱为:"
+
posBarcode
.
getBarcode
()
+
",需要进行标记,进行出库,工单为:"
+
orderNo
);
subCode
=
updateSubCodeAppendData
(
cacheOrder
,
orderItem
,
subCode
);
int
needOutNum
=
remainNum
-
assignNum
;
if
(
subCode
.
getAmount
()
-
needOutNum
>
0
){
subCode
=
updateSubCodeAppendData
(
cacheOrder
,
orderItem
,
subCode
,
needOutNum
);
assignNum
=
assignNum
+
needOutNum
;
}
else
{
subCode
=
updateSubCodeAppendData
(
cacheOrder
,
orderItem
,
subCode
,
subCode
.
getAmount
());
assignNum
=
assignNum
+
subCode
.
getAmount
();
}
//同时更新barcode和库位信息
posBarcode
.
UpdateSubCode
(
subCode
);
barcodeManager
.
save
(
subCode
);
...
...
@@ -638,7 +651,6 @@ public class LiteOrderCache {
needOutPosId
.
add
(
pos
.
getId
());
assignReelCount
=
assignReelCount
+
1
;
taskReelCount
=
taskReelCount
+
1
;
assignNum
=
assignNum
+
subCode
.
getAmount
();
}
}
}
...
...
@@ -1164,11 +1176,11 @@ public class LiteOrderCache {
}
private
Barcode
updateSubCodeAppendData
(
LiteOrder
cacheOrder
,
LiteOrderItem
orderItem
,
Barcode
subCode
)
{
private
Barcode
updateSubCodeAppendData
(
LiteOrder
cacheOrder
,
LiteOrderItem
orderItem
,
Barcode
subCode
,
int
needOutNum
)
{
subCode
.
updateAppendData
(
"orderItemId"
,
orderItem
.
getId
());
subCode
.
updateAppendData
(
"orderNo"
,
cacheOrder
.
getOrderNo
());
subCode
.
updateAppendData
(
"orderId"
,
cacheOrder
.
getId
());
subCode
.
updateAppendData
(
"awaiting"
,
subCode
.
getAmount
()
);
subCode
.
updateAppendData
(
"awaiting"
,
needOutNum
);
return
subCode
;
}
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
006361a
...
...
@@ -1350,31 +1350,45 @@ public class TaskService {
}
public
List
<
Barcode
>
barcodeListByCheckOutType
(
CHECKOUT_TYPE
checkoutType
,
List
<
Barcode
>
barcodeList
)
{
//按时间进行排序
if
(
CHECKOUT_TYPE
.
EXPIRE_FIRST
.
equals
(
checkoutType
))
{
//先过期先出
barcodeList
=
barcodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getExpireDate
,
Comparator
.
naturalOrder
())
.
thenComparing
(
Barcode:
:
getPutInDate
,
Comparator
.
naturalOrder
())).
collect
(
Collectors
.
toList
());
}
else
if
(
CHECKOUT_TYPE
.
FIFO
.
equals
(
checkoutType
))
{
//严格的先进先出
barcodeList
=
barcodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getPutInDate
,
Comparator
.
naturalOrder
())
.
thenComparing
(
Barcode:
:
getUsedCount
)).
collect
(
Collectors
.
toList
());
}
else
if
(
CHECKOUT_TYPE
.
USED_FIRST
.
equals
(
checkoutType
))
{
//尾料优先
barcodeList
=
barcodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getAmount
)
.
thenComparing
(
Barcode:
:
getPutInDate
,
Comparator
.
naturalOrder
())).
collect
(
Collectors
.
toList
());
// 处理barcodeList为null的情况
if
(
barcodeList
==
null
)
{
return
Collections
.
emptyList
();
}
// 使用Comparator.nullsFirst或nullsLast处理可能的null值
Comparator
<
Barcode
>
comparator
=
null
;
if
(
CHECKOUT_TYPE
.
EXPIRE_FIRST
.
equals
(
checkoutType
))
{
// 先过期先出
comparator
=
Comparator
.
comparing
(
Barcode:
:
getExpireDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()))
.
thenComparing
(
Barcode:
:
getPutInDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()));
}
else
if
(
CHECKOUT_TYPE
.
FIFO
.
equals
(
checkoutType
))
{
// 严格的先进先出
comparator
=
Comparator
.
comparing
(
Barcode:
:
getPutInDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()))
.
thenComparing
(
Barcode:
:
getUsedCount
);
}
else
if
(
CHECKOUT_TYPE
.
USED_FIRST
.
equals
(
checkoutType
))
{
// 尾料优先
comparator
=
Comparator
.
comparing
(
Barcode:
:
getAmount
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()))
.
thenComparing
(
Barcode:
:
getPutInDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()));
}
else
if
(
CHECKOUT_TYPE
.
PRODUCE_DATE
.
equals
(
checkoutType
))
{
barcodeList
=
barcodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getProduceDate
,
Comparator
.
naturalOrder
(
))
.
thenComparing
(
Barcode:
:
getAmount
)
.
thenComparing
(
Barcode:
:
getPutInDate
,
Comparator
.
naturalOrder
())).
collect
(
Collectors
.
toList
(
));
comparator
=
Comparator
.
comparing
(
Barcode:
:
getProduceDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()
))
.
thenComparing
(
Barcode:
:
getAmount
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
())
)
.
thenComparing
(
Barcode:
:
getPutInDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()
));
}
else
if
(
CHECKOUT_TYPE
.
BATCH_FIRST
.
equals
(
checkoutType
))
{
barcodeList
=
barcodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getBatch
,
Comparator
.
naturalOrder
())
.
thenComparing
(
Barcode:
:
getProduceDate
,
Comparator
.
naturalOrder
())
.
thenComparing
(
Barcode:
:
getAmount
)
.
thenComparing
(
Barcode:
:
getPutInDate
,
Comparator
.
naturalOrder
())).
collect
(
Collectors
.
toList
());
}
else
{
//效率优先
barcodeList
=
barcodeList
.
stream
().
sorted
(
Comparator
.
comparing
(
Barcode:
:
getPutInDate
,
Comparator
.
naturalOrder
())
.
thenComparing
(
Barcode:
:
getCreateDate
))
.
collect
(
Collectors
.
toList
());
}
return
barcodeList
;
comparator
=
Comparator
.
comparing
(
Barcode:
:
getBatch
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()))
.
thenComparing
(
Barcode:
:
getProduceDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()))
.
thenComparing
(
Barcode:
:
getAmount
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()))
.
thenComparing
(
Barcode:
:
getPutInDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()));
}
else
{
// 效率优先
comparator
=
Comparator
.
comparing
(
Barcode:
:
getPutInDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()))
.
thenComparing
(
Barcode:
:
getCreateDate
,
Comparator
.
nullsFirst
(
Comparator
.
naturalOrder
()));
}
return
barcodeList
.
stream
()
.
filter
(
Objects:
:
nonNull
)
// 过滤掉可能的null元素
.
sorted
(
comparator
)
.
collect
(
Collectors
.
toList
());
}
public
void
moveTaskToFinished
(
DataLog
task
)
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论