Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 48f673de
由
zshaohui
编写于
2025-09-02 13:57:40 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.提供缓存信息接口给客户端
1 个父辈
102bc5b0
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
93 行增加
和
36 行删除
src/main/java/com/neotel/smfcore/common/utils/Constants.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/custom/france1588/bean/XlcTask.java
src/main/java/com/neotel/smfcore/custom/france1588/controller/Device1588Controller.java
src/main/java/com/neotel/smfcore/custom/france1588/enums/TaskLoc.java
src/main/resources/messages.properties
src/main/resources/messages_de_DE.properties
src/main/resources/messages_en_US.properties
src/main/resources/messages_fr_FR.properties
src/main/resources/messages_ja_JP.properties
src/main/resources/messages_zh_CN.properties
src/main/resources/messages_zh_TW.properties
src/main/java/com/neotel/smfcore/common/utils/Constants.java
查看文件 @
48f673d
package
com
.
neotel
.
smfcore
.
common
.
utils
;
public
class
Constants
{
private
Constants
()
{
// hide me
}
...
...
@@ -213,4 +215,7 @@ public class Constants {
*/
public
static
final
String
Cache_AuthDate
=
"Cache_AuthDate"
;
public
static
final
String
Cache_BoxCacheInfo
=
"Cache_BoxCacheInfo"
;
}
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
48f673d
...
...
@@ -472,9 +472,9 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
else
if
(
BOX_STATUS
.
IN_FAILED
==
status
)
{
//入库失败
//暂不处理
}
else
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
);
//
finishedOutPos(statusBean.getCid(),posName,barcode,executeTime);
}
else
if
(
BOX_STATUS
.
OUT_END
==
status
)
{
//出库完成(放到仓门口
endOutTask
(
statusBean
.
getCid
(),
posName
,
barcode
);
//
endOutTask(statusBean.getCid(),posName,barcode);
}
// else if (BOX_STATUS.REWARM_TAKING_END == status) {
// //回温取料完成, 将库位清空
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
48f673d
...
...
@@ -598,7 +598,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
StoragePos
pos
=
storagePosDao
.
findOne
(
query
);
if
((!
ObjectUtil
.
isNotEmpty
(
msg
)
)&&
(
pos
!=
null
))
{
Point
targetP
=
PointUtil
.
getPosPoint
(
lastPosId
,
false
);
log
.
debug
(
msg
+
"结果:["
+
pos
.
getPosName
()
+
"]["
+
targetP
.
getX
()
+
","
+
targetP
.
getY
()
+
"]"
);
log
.
info
(
msg
+
"结果:["
+
pos
.
getPosName
()
+
"]["
+
targetP
.
getX
()
+
","
+
targetP
.
getY
()
+
"]"
);
}
return
pos
;
}
...
...
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
48f673d
...
...
@@ -252,6 +252,7 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
//是否关闭
private
boolean
closed
=
false
;
private
boolean
outFromPos
=
false
;
public
String
getBarcode
()
{
if
(
barcode
==
null
){
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
48f673d
...
...
@@ -527,7 +527,8 @@ public class TaskService {
String
cid
=
storage
.
getCid
();
//有入库任务的料仓不分配出库任务
if
(!
hasExecutingTask
(
cid
,
OP
.
PUT_IN
))
{
DataLog
task
=
findCheckoutBoxTask
(
storage
);
//DataLog task = findCheckoutBoxTask(storage);
DataLog
task
=
null
;
if
(
task
!=
null
)
{
//从等待列表中删除,加入到执行列表中
...
...
@@ -935,7 +936,7 @@ public class TaskService {
}
try
{
Collection
<
String
>
operatingPosIds
=
excludePosIds
();
log
.
debug
(
"尝试从["
+
storage
.
getCid
()
+
"]中为["
+
barcode
.
getBarcode
()
+
"]查找空位"
);
log
.
info
(
"尝试从["
+
storage
.
getCid
()
+
"]中为["
+
barcode
.
getBarcode
()
+
"]查找空位"
);
StoragePos
pos
=
storagePosManager
.
getEmptyPosByStorage
(
storage
,
barcode
,
operatingPosIds
,
lastPosId
);
if
(
pos
!=
null
)
{
//判断尺寸是否一致
...
...
@@ -958,7 +959,7 @@ public class TaskService {
for
(
Storage
storage
:
availbleStorageList
)
{
try
{
Collection
<
String
>
operatingPosIds
=
excludePosIds
();
log
.
debug
(
"尝试从["
+
storage
.
getCid
()
+
"]中为["
+
barcode
.
getBarcode
()
+
"]查找空位"
);
log
.
info
(
"尝试从["
+
storage
.
getCid
()
+
"]中为["
+
barcode
.
getBarcode
()
+
"]查找空位"
);
StoragePos
pos
=
storagePosManager
.
getEmptyPosByStorage
(
storage
,
barcode
,
operatingPosIds
,
lastPosId
);
if
(
pos
!=
null
)
{
if
(
isSameSize
(
barcode
,
pos
)){
...
...
@@ -1350,31 +1351,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
)
{
...
...
src/main/java/com/neotel/smfcore/custom/france1588/bean/XlcTask.java
0 → 100644
查看文件 @
48f673d
package
com
.
neotel
.
smfcore
.
custom
.
france1588
.
bean
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
XlcTask
{
private
String
taskId
;
private
String
barcode
;
private
int
type
;
private
String
toloc
;
private
String
posName
;
private
String
status
;
private
Date
createDate
;
}
src/main/java/com/neotel/smfcore/custom/france1588/controller/Device1588Controller.java
0 → 100644
查看文件 @
48f673d
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/custom/france1588/enums/TaskLoc.java
0 → 100644
查看文件 @
48f673d
package
com
.
neotel
.
smfcore
.
custom
.
france1588
.
enums
;
public
class
TaskLoc
{
public
static
final
String
BOX_TASK_IN
=
"BOX_TASK_IN"
;
public
static
final
String
BOX_TASK_OUT
=
"BOX_TASK_OUT"
;
}
\ No newline at end of file
src/main/resources/messages.properties
查看文件 @
48f673d
...
...
@@ -434,4 +434,5 @@ smfcore.virtualOperations=\u865A\u62DF\u4ED3\u64CD\u4F5C
smfcore.equipment.view.ncgroup
=
Neo Counter
smfcore.virtual.boxInPos
=
[{0}]
\u
5DF2
\u5728\u
5E93
\u
4F4D[{1}]
\u
4E2D,
\u
8BF7
\u5148\u
53D6
\u
51FA
smfcore.virtual.quantityError
=
\u
53D6
\u
51FA
\u6570\u
91CF
\u
5E94
\u
4E3A[{0}]
smfcode.virtual.enter
=
\u
8BF7
\u
626B
\u
63CF
\u6216\u
8F93
\u5165\u6761\u7801\u
540E
\u6309\u
56DE
\u
8F66
\u
786E
\u
8BA4
\ No newline at end of file
smfcode.virtual.enter
=
\u
8BF7
\u
626B
\u
63CF
\u6216\u
8F93
\u5165\u6761\u7801\u
540E
\u6309\u
56DE
\u
8F66
\u
786E
\u
8BA4
smfcore.box.findFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5E93
\u7684\u6599\u
7BB1
\ No newline at end of file
src/main/resources/messages_de_DE.properties
查看文件 @
48f673d
...
...
@@ -424,4 +424,5 @@ smfcore.virtualOperations=Vorg\u00E4nge im virtuellen Lager
smfcore.equipment.view.ncgroup
=
Neo Counter
smfcore.virtual.boxInPos
=
[{0}] befindet sich bereits im Lagerplatz [{1}]. Bitte entnehmen Sie es zuerst
smfcore.virtual.quantityError
=
Die zu entnehmende Menge sollte [{0}] betragen
smfcode.virtual.enter
=
Bitte scannen Sie den Barcode oder geben Sie ihn ein und best
\u
00E4tigen Sie mit Enter
\ No newline at end of file
smfcode.virtual.enter
=
Bitte scannen Sie den Barcode oder geben Sie ihn ein und best
\u
00E4tigen Sie mit Enter
smfcore.box.findFail
=
Kein verf
\u
00FCgbarer Beh
\u
00E4lter f
\u
00FCr den Ausgang gefunden
\ No newline at end of file
src/main/resources/messages_en_US.properties
查看文件 @
48f673d
...
...
@@ -425,4 +425,5 @@ smfcore.virtualOperations=Virtual Storage Op
smfcore.equipment.view.ncgroup
=
Neo Counter
smfcore.virtual.boxInPos
=
[{0}] is already in location [{1}]. Please remove it first
smfcore.virtual.quantityError
=
The quantity to be removed should be [{0}]
smfcode.virtual.enter
=
Please scan or enter the barcode, then press Enter
\ No newline at end of file
smfcode.virtual.enter
=
Please scan or enter the barcode, then press Enter
smfcore.box.findFail
=
No available bin found for outbound
\ No newline at end of file
src/main/resources/messages_fr_FR.properties
查看文件 @
48f673d
...
...
@@ -424,4 +424,5 @@ smfcore.virtualOperations=Op\u00E9rations de l'entrep\u00F4t virtuel
smfcore.equipment.view.ncgroup
=
Neo Counter
smfcore.virtual.boxInPos
=
[{0}] est d
\u
00E9j
\u
00E0 dans l'emplacement [{1}]. Veuillez d'abord le retirer
smfcore.virtual.quantityError
=
La quantit
\u
00E9
\u
00E0 retirer doit
\u
00EAtre [{0}]
smfcode.virtual.enter
=
Veuillez scanner ou saisir le code-barres, puis appuyer sur Entr
\u
00E9e
\ No newline at end of file
smfcode.virtual.enter
=
Veuillez scanner ou saisir le code-barres, puis appuyer sur Entr
\u
00E9e
smfcore.box.findFail
=
Aucun bac disponible trouv
\u
00E9 pour la sortie
\ No newline at end of file
src/main/resources/messages_ja_JP.properties
查看文件 @
48f673d
...
...
@@ -421,4 +421,5 @@ smfcore.virtualOperations=\u4EEE\u60F3\u5009\u5EAB\u64CD\u4F5C
smfcore.equipment.view.ncgroup
=
Neo Counter
smfcore.virtual.boxInPos
=
[{0}]
\u
306F
\u
65E2
\u
306B
\u
30ED
\u
30B1
\u
30FC
\u
30B7
\u
30E7
\u
30F3 [{1}]
\u
306B
\u3042\u
308A
\u
307E
\u3059\u3002\u5148\u
306B
\u
53D6
\u
308A
\u
51FA
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfcore.virtual.quantityError
=
\u
53D6
\u
308A
\u
51FA
\u3057\u6570\u
91CF
\u
306F[{0}]
\u3067\u3042\u
308B
\u
5FC5
\u8981\u
304C
\u3042\u
308A
\u
307E
\u3059
smfcode.virtual.enter
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u3092\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3001\u
307E
\u
305F
\u
306F
\u5165\u
529B
\u
5F8C
\u3001
Enter
\u
30AD
\u
30FC
\u3092\u
62BC
\u3057\u3066\u
304F
\u3060\u3055\u3044
\ No newline at end of file
smfcode.virtual.enter
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u3092\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3001\u
307E
\u
305F
\u
306F
\u5165\u
529B
\u
5F8C
\u3001
Enter
\u
30AD
\u
30FC
\u3092\u
62BC
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfcore.box.findFail
=
\u
51FA
\u
5EAB
\u
53EF
\u
80FD
\u
306A
\u
7BB1
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
\ No newline at end of file
src/main/resources/messages_zh_CN.properties
查看文件 @
48f673d
...
...
@@ -421,4 +421,5 @@ smfcore.virtualOperations=\u865A\u62DF\u4ED3\u64CD\u4F5C
smfcore.equipment.view.ncgroup
=
Neo Counter
smfcore.virtual.boxInPos
=
[{0}]
\u
5DF2
\u5728\u
5E93
\u
4F4D[{1}]
\u
4E2D,
\u
8BF7
\u5148\u
53D6
\u
51FA
smfcore.virtual.quantityError
=
\u
53D6
\u
51FA
\u6570\u
91CF
\u
5E94
\u
4E3A[{0}]
smfcode.virtual.enter
=
\u
8BF7
\u
626B
\u
63CF
\u6216\u
8F93
\u5165\u6761\u7801\u
540E
\u6309\u
56DE
\u
8F66
\u
786E
\u
8BA4
\ No newline at end of file
smfcode.virtual.enter
=
\u
8BF7
\u
626B
\u
63CF
\u6216\u
8F93
\u5165\u6761\u7801\u
540E
\u6309\u
56DE
\u
8F66
\u
786E
\u
8BA4
smfcore.box.findFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5E93
\u7684\u6599\u
7BB1
\ No newline at end of file
src/main/resources/messages_zh_TW.properties
查看文件 @
48f673d
...
...
@@ -421,4 +421,5 @@ smfcore.virtualOperations=\u865B\u64EC\u5009\u64CD\u4F5C
smfcore.equipment.view.ncgroup
=
Neo Counter
smfcore.virtual.boxInPos
=
[{0}]
\u
5DF2
\u5728\u
5EAB
\u
4F4D[{1}]
\u
4E2D,
\u
8ACB
\u5148\u
53D6
\u
51FA
smfcore.virtual.quantityError
=
\u
53D6
\u
51FA
\u6578\u
91CF
\u
61C9
\u
70BA[{0}]
smfcode.virtual.enter
=
\u
8ACB
\u6383\u
63CF
\u6216\u
8F38
\u5165\u
689D
\u
78BC
\u
5F8C
\u6309\u
56DE
\u
8ECA
\u
78BA
\u
8A8D
\ No newline at end of file
smfcode.virtual.enter
=
\u
8ACB
\u6383\u
63CF
\u6216\u
8F38
\u5165\u
689D
\u
78BC
\u
5F8C
\u6309\u
56DE
\u
8ECA
\u
78BA
\u
8A8D
smfcore.box.findFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5EAB
\u7684\u6599\u
7BB1
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论