Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit aff7baa2
由
zshaohui
编写于
2025-11-07 14:58:13 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.库位异常,添加到message中
1 个父辈
1f6e3d4a
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
108 行增加
和
3 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
查看文件 @
aff7baa
...
@@ -11,6 +11,9 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
...
@@ -11,6 +11,9 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.message.enums.MessageType
;
import
com.neotel.smfcore.core.message.service.manager.IMessageManager
;
import
com.neotel.smfcore.core.message.service.po.Message
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
...
@@ -18,9 +21,6 @@ import com.neotel.smfcore.core.storage.service.po.StoragePos;
...
@@ -18,9 +21,6 @@ import com.neotel.smfcore.core.storage.service.po.StoragePos;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.websocket.MsgType
;
import
com.neotel.smfcore.core.system.websocket.SocketMsg
;
import
com.neotel.smfcore.core.system.websocket.WebSocketServer
;
import
com.neotel.smfcore.security.TokenProvider
;
import
com.neotel.smfcore.security.TokenProvider
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
com.neotel.smfcore.security.service.manager.IUserManager
;
import
com.neotel.smfcore.security.service.manager.IUserManager
;
...
@@ -48,6 +48,9 @@ public class NLPShelfHandler extends BaseDeviceHandler {
...
@@ -48,6 +48,9 @@ public class NLPShelfHandler extends BaseDeviceHandler {
@Autowired
@Autowired
private
IUserManager
userManager
;
private
IUserManager
userManager
;
@Autowired
private
IMessageManager
messageManager
;
/**
/**
* 扫码
* 扫码
*/
*/
...
@@ -327,11 +330,24 @@ public class NLPShelfHandler extends BaseDeviceHandler {
...
@@ -327,11 +330,24 @@ public class NLPShelfHandler extends BaseDeviceHandler {
}
}
}
}
//先获取到上一次缓存的信息
List
<
List
<
String
>>
lastDeviceData
=
DevicesStatusUtil
.
getDeviceData
(
cid
);
List
<
String
>
lastHasReelPosErrorList
=
new
ArrayList
<>();
List
<
String
>
lastNoReelPosErrorList
=
new
ArrayList
<>();
if
(
lastDeviceData
!=
null
&&
lastDeviceData
.
size
()
==
2
){
lastHasReelPosErrorList
=
lastDeviceData
.
get
(
0
);
lastNoReelPosErrorList
=
lastDeviceData
.
get
(
1
);
}
List
<
List
<
String
>>
data
=
new
ArrayList
<>();
List
<
List
<
String
>>
data
=
new
ArrayList
<>();
data
.
add
(
Arrays
.
asList
(
hasReelPosErrorList
));
data
.
add
(
Arrays
.
asList
(
hasReelPosErrorList
));
data
.
add
(
Arrays
.
asList
(
noReelPosErrorList
));
data
.
add
(
Arrays
.
asList
(
noReelPosErrorList
));
DevicesStatusUtil
.
updateDeviceData
(
cid
,
data
);
DevicesStatusUtil
.
updateDeviceData
(
cid
,
data
);
//在这里进行对比
compareErrorDataWithMessage
(
cid
,
lastHasReelPosErrorList
,
lastNoReelPosErrorList
,
data
.
get
(
0
),
data
.
get
(
1
));
List
<
String
>
inOkList
=
new
ArrayList
<>();
List
<
String
>
inOkList
=
new
ArrayList
<>();
List
<
String
>
inNgList
=
new
ArrayList
<>();
List
<
String
>
inNgList
=
new
ArrayList
<>();
List
<
String
>
outOkList
=
new
ArrayList
<>();
List
<
String
>
outOkList
=
new
ArrayList
<>();
...
@@ -574,6 +590,95 @@ public class NLPShelfHandler extends BaseDeviceHandler {
...
@@ -574,6 +590,95 @@ public class NLPShelfHandler extends BaseDeviceHandler {
return
ResultBean
.
newOkResult
(
posList
);
return
ResultBean
.
newOkResult
(
posList
);
}
}
private
void
compareErrorDataWithMessage
(
String
cid
,
List
<
String
>
lastHasReelPosErrorList
,
List
<
String
>
lastNoReelPosErrorList
,
List
<
String
>
currentHasReelPosErrorList
,
List
<
String
>
currentNoReelPosErrorList
)
{
Storage
storage
=
dataCache
.
getStorage
(
cid
);
// 处理空值
if
(
lastHasReelPosErrorList
==
null
)
lastHasReelPosErrorList
=
new
ArrayList
<>();
if
(
lastNoReelPosErrorList
==
null
)
lastNoReelPosErrorList
=
new
ArrayList
<>();
if
(
currentHasReelPosErrorList
==
null
)
currentHasReelPosErrorList
=
new
ArrayList
<>();
if
(
currentNoReelPosErrorList
==
null
)
currentNoReelPosErrorList
=
new
ArrayList
<>();
// 对比有料异常数据
List
<
String
>
hasNewErrors
=
new
ArrayList
<>();
List
<
String
>
hasRecoveredErrors
=
new
ArrayList
<>();
List
<
String
>
hasPersistentErrors
=
new
ArrayList
<>();
for
(
String
item
:
currentHasReelPosErrorList
)
{
if
(!
lastHasReelPosErrorList
.
contains
(
item
))
{
hasNewErrors
.
add
(
item
);
}
else
{
hasPersistentErrors
.
add
(
item
);
}
}
for
(
String
item
:
lastHasReelPosErrorList
)
{
if
(!
currentHasReelPosErrorList
.
contains
(
item
))
{
hasRecoveredErrors
.
add
(
item
);
}
}
// 对比无料异常数据
List
<
String
>
noNewErrors
=
new
ArrayList
<>();
List
<
String
>
noRecoveredErrors
=
new
ArrayList
<>();
List
<
String
>
noPersistentErrors
=
new
ArrayList
<>();
for
(
String
item
:
currentNoReelPosErrorList
)
{
if
(!
lastNoReelPosErrorList
.
contains
(
item
))
{
noNewErrors
.
add
(
item
);
}
else
{
noPersistentErrors
.
add
(
item
);
}
}
for
(
String
item
:
lastNoReelPosErrorList
)
{
if
(!
currentNoReelPosErrorList
.
contains
(
item
))
{
noRecoveredErrors
.
add
(
item
);
}
}
// 打印有料异常日志
if
(!
hasNewErrors
.
isEmpty
())
{
log
.
warn
(
"料架[{}] 有料异常(实际有料但数据库无信息) 新增异常库位: {}"
,
cid
,
String
.
join
(
", "
,
hasNewErrors
));
//smfcode.nlp.posHasReelError=库位[{0}]检测到有物料,但系统无库存记录
for
(
String
hasNewError
:
hasNewErrors
)
{
Message
message
=
Message
.
newMsg
(
MessageType
.
ERROR
.
name
(),
storage
.
getName
(),
storage
.
getId
(),
hasNewError
,
"smfcode.nlp.posHasReelError"
,
"库位[{0}]检测到有物料,但系统无库存记录"
,
new
String
[]{
hasNewError
});
messageManager
.
save
(
message
);
}
}
if
(!
hasRecoveredErrors
.
isEmpty
())
{
log
.
info
(
"料架[{}] 有料异常(实际有料但数据库无信息) 恢复正常库位: {}"
,
cid
,
String
.
join
(
", "
,
hasRecoveredErrors
));
for
(
String
hasRecoveredError
:
hasRecoveredErrors
)
{
//smfcode.nlp.posRecovered=库位[{0}]恢复正常
Message
message
=
Message
.
newMsg
(
MessageType
.
INFO
.
name
(),
storage
.
getName
(),
storage
.
getId
(),
hasRecoveredError
,
"smfcode.nlp.posRecovered"
,
"库位[{0}]恢复正常"
,
new
String
[]{
hasRecoveredError
});
messageManager
.
save
(
message
);
}
}
if
(!
hasPersistentErrors
.
isEmpty
())
{
//log.error("⚠️ 料架[{}] 有料异常(实际有料但数据库无信息) 持续异常库位: {}", cid, String.join(", ", hasPersistentErrors));
}
// 打印无料异常日志
if
(!
noNewErrors
.
isEmpty
())
{
log
.
warn
(
"料架[{}] 无料异常(实际无料但数据库有信息) 新增异常库位: {}"
,
cid
,
String
.
join
(
", "
,
noNewErrors
));
for
(
String
noNewError
:
noNewErrors
)
{
//smfcode.nlp.posNoReelError=库位[{0}]检测到没有物料,但系统有库存记录
Message
message
=
Message
.
newMsg
(
MessageType
.
ERROR
.
name
(),
storage
.
getName
(),
storage
.
getId
(),
noNewError
,
"smfcode.nlp.posNoReelError"
,
"库位[{0}]检测到没有物料,但系统有库存记录"
,
new
String
[]{
noNewError
});
messageManager
.
save
(
message
);
}
}
if
(!
noRecoveredErrors
.
isEmpty
())
{
log
.
info
(
"料架[{}] 无料异常(实际无料但数据库有信息) 恢复正常库位: {}"
,
cid
,
String
.
join
(
", "
,
noRecoveredErrors
));
for
(
String
noRecoveredError
:
noRecoveredErrors
)
{
//smfcode.nlp.posRecovered=库位[{0}]恢复正常
Message
message
=
Message
.
newMsg
(
MessageType
.
INFO
.
name
(),
storage
.
getName
(),
storage
.
getId
(),
noRecoveredError
,
"smfcode.nlp.posRecovered"
,
"库位[{0}]恢复正常"
,
new
String
[]{
noRecoveredError
});
messageManager
.
save
(
message
);
}
}
if
(!
noPersistentErrors
.
isEmpty
())
{
//log.error("⚠️ 料架[{}] 无料异常(实际无料但数据库有信息) 持续异常库位: {}", cid, String.join(", ", noPersistentErrors));
}
}
@Override
@Override
public
DeviceType
getDeviceType
()
{
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
NLP
;
return
DeviceType
.
NLP
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论