Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit e70c650d
由
LN
编写于
2021-10-27 17:09:03 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
料架扫码入库逻辑修改。
1 个父辈
e1cf2260
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
97 行增加
和
29 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/SensorShelfHandler.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/hella/handler/HellaServiceHandler.java
src/main/java/com/neotel/smfcore/hella/rest/HellaSensorShelfController.java
src/main/java/com/neotel/smfcore/hella/tcp/command/HellaReqCommand.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/SensorShelfHandler.java
查看文件 @
e70c650
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.bean.ResultBean
;
...
...
@@ -120,25 +121,34 @@ public class SensorShelfHandler extends BaseDeviceHandler {
}
else
{
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
();
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
isPutInTask
()
&&
queueTask
.
getGroupId
().
equals
(
groupId
)){
queueTask
.
setCid
(
cid
);
queueTask
.
setPosId
(
pos
.
getId
());
queueTask
.
setPosName
(
pos
.
getPosName
());
queueTask
.
setStorageId
(
pos
.
getStorageId
());
queueTask
.
setStorageName
(
storage
.
getName
());
try
{
//入库完成,发送入库完成请求
super
.
finishedPutIn
(
cid
,
pos
.
getPosName
());
inOkList
.
add
(
hasReelPosList
[
0
]);
String
msg
=
queueTask
.
getBarcode
()+
"入库到"
+
pos
.
getPosName
()+
"成功"
;
log
.
error
(
msg
);
WebSocketServer
.
sendGroupMsg
(
groupId
,
new
SocketMsg
(
msg
,
MsgType
.
INFO
));
break
;
}
catch
(
Exception
e
)
{
log
.
error
(
"入库出错"
,
e
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.inputError"
,
"入库出错:{0}"
,
new
String
[]{
e
.
getMessage
()});
boolean
isPutInTask
=
false
;
if
(
ObjectUtil
.
isNotEmpty
(
queueTask
.
getStorageId
())
){
if
(
queueTask
.
isPutInTask
()&&
queueTask
.
getStorageId
().
equals
(
storage
.
getId
())){
isPutInTask
=
true
;
}
}
else
if
(
queueTask
.
isPutInTask
()
&&
queueTask
.
getGroupId
().
equals
(
groupId
))
{
isPutInTask
=
true
;
}
if
(
isPutInTask
)
{
queueTask
.
setCid
(
cid
);
queueTask
.
setPosId
(
pos
.
getId
());
queueTask
.
setPosName
(
pos
.
getPosName
());
queueTask
.
setStorageId
(
pos
.
getStorageId
());
queueTask
.
setStorageName
(
storage
.
getName
());
try
{
//入库完成,发送入库完成请求
super
.
finishedPutIn
(
cid
,
pos
.
getPosName
());
inOkList
.
add
(
hasReelPosList
[
0
]);
String
msg
=
queueTask
.
getBarcode
()
+
"入库到"
+
pos
.
getPosName
()
+
"成功"
;
log
.
error
(
msg
);
WebSocketServer
.
sendGroupMsg
(
groupId
,
new
SocketMsg
(
msg
,
MsgType
.
INFO
));
break
;
}
catch
(
Exception
e
)
{
log
.
error
(
"入库出错"
,
e
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.inputError"
,
"入库出错:{0}"
,
new
String
[]{
e
.
getMessage
()});
}
}
}
if
(
inOkList
.
size
()
==
0
){
inNgList
.
add
(
hasReelPosList
[
0
]);
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
e70c650
package
com
.
neotel
.
smfcore
.
core
.
system
.
util
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.base.Strings
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
...
...
@@ -160,7 +161,7 @@ public class TaskService {
if
(!
Strings
.
isNullOrEmpty
(
barcode
)
&&
task
.
getBarcode
().
equals
(
barcode
))
{
log
.
info
(
"二维码:["
+
barcode
+
"]已在操作队列中,操作失败"
);
throw
new
ValidateException
(
"smfcode.error.barcode.inQueue"
,
"二维码[{0}]已在操作队列中,操作失败"
,
new
String
[]{
barcode
});
}
else
if
(
task
.
getPosName
().
equals
(
posName
))
{
}
else
if
(
task
.
getPosName
().
equals
(
posName
)
&&
ObjectUtil
.
isNotEmpty
(
posName
)
)
{
log
.
info
(
"位置:["
+
posName
+
"]已在操作队列中,操作失败"
);
throw
new
ValidateException
(
"smfcode.error.pos.inQueue"
,
"位置:[{0}}]已在操作队列中,操作失败"
,
new
String
[]{
posName
});
}
...
...
src/main/java/com/neotel/smfcore/hella/handler/HellaServiceHandler.java
查看文件 @
e70c650
package
com
.
neotel
.
smfcore
.
hella
.
handler
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
...
...
@@ -76,6 +79,9 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
@Autowired
private
IGroupManager
groupManager
;
@Autowired
private
CodeResolve
codeResolve
;
protected
final
static
Logger
log
=
LogManager
.
getLogger
();
private
AtomicLong
eventId
=
new
AtomicLong
(
0
);
...
...
@@ -91,21 +97,38 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
HellaReqCommand
command
=
HellaReqCommand
.
newCheckMaterialCmd
(
eventId
.
incrementAndGet
(),
scannedCode
);
command
.
setGroupId
(
groupId
);
boolean
storageCheckMaterial
=
false
;
if
(
ObjectUtil
.
isNotEmpty
(
storageId
)){
Storage
storage
=
dataCache
.
getStorageById
(
storageId
);
if
(
storage
!=
null
){
storageCheckMaterial
=
true
;
command
.
setGroupId
(
storage
.
getGroupId
());
command
.
setStorageId
(
storageId
);
}
}
command
.
setLoginUser
(
loginUser
);
for
(
HellaReqCommand
hellaReqCommand
:
commandMap
.
values
())
{
if
(
hellaReqCommand
.
getGroupId
().
equals
(
groupId
)
&&
hellaReqCommand
.
isCheckMaterialReq
()){
//有未完成的入库请求
commandMap
.
remove
(
hellaReqCommand
.
getEventId
());
log
.
info
(
"清理未完成的入库检查请求["
+
hellaReqCommand
.
getEventId
()+
"]:"
+
hellaReqCommand
.
getData
());
//return ResultBean.newErrorResult(-1,"["+hellaReqCommand.getData()+"]入库任务未完成,无法入库");
if
(
storageCheckMaterial
)
{
if
(
ObjectUtil
.
isNotEmpty
(
hellaReqCommand
.
getStorageId
())&&
hellaReqCommand
.
getStorageId
().
equals
(
storageId
)&&
hellaReqCommand
.
isCheckMaterialReq
()){
//有未完成的入库请求
commandMap
.
remove
(
hellaReqCommand
.
getEventId
());
log
.
info
(
"清理未完成的入库检查请求["
+
hellaReqCommand
.
getEventId
()
+
"]:"
+
hellaReqCommand
.
getData
());
}
}
else
{
if
(
hellaReqCommand
.
getGroupId
().
equals
(
groupId
)
&&
hellaReqCommand
.
isCheckMaterialReq
())
{
//有未完成的入库请求
commandMap
.
remove
(
hellaReqCommand
.
getEventId
());
log
.
info
(
"清理未完成的入库检查请求["
+
hellaReqCommand
.
getEventId
()
+
"]:"
+
hellaReqCommand
.
getData
());
//return ResultBean.newErrorResult(-1,"["+hellaReqCommand.getData()+"]入库任务未完成,无法入库");
}
}
}
commandMap
.
put
(
command
.
getEventId
(),
command
);
log
.
info
(
"发送检查物料条码请求:"
+
command
.
toReqMsg
());
ResultBean
resultBean
=
HellaTcpClient
.
sendMsg
(
command
.
toReqMsg
());
//testCheckOK(command);
//
ResultBean resultBean =
testCheckOK(command);
resultBean
.
setMsg
(
"Check Material result:"
+
resultBean
.
getMsg
());
return
resultBean
;
}
...
...
@@ -248,16 +271,28 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
private
void
testCheckOK
(
HellaReqCommand
command
)
{
private
ResultBean
testCheckOK
(
HellaReqCommand
command
)
{
HellaRespCommand
respCommand
=
new
HellaRespCommand
();
respCommand
.
setCmd
(
"TestCheckMaterial"
);
respCommand
.
setEventId
(
command
.
getEventId
());
String
reelId
=
command
.
getData
().
toString
();
String
[]
resposArr
=
new
String
[]{
"TestCheckMaterial"
,
command
.
getEventId
(),
"0"
,
"OK"
,
"PN001"
,
reelId
,
"1000"
,
"1"
,
"LC01"
};
String
codeStr
=
command
.
getData
().
toString
();
CodeBean
codeBean
=
codeResolve
.
resolveSingleCode
(
codeStr
);
if
(
codeBean
==
null
||
codeBean
.
getBarcode
()==
null
){
return
ResultBean
.
newErrorResult
(
1
,
"smfcode.error.barcode.invalid"
,
"条码无效"
);
}
if
(
ObjectUtil
.
isNotEmpty
(
codeBean
.
getErrorCode
())
){
return
ResultBean
.
newErrorResult
(
1
,
codeBean
.
getErrorCode
(),
codeBean
.
getError
(),
codeBean
.
getParams
());
}
String
pn
=
codeBean
.
getBarcode
().
getPartNumber
();
String
reelId
=
codeBean
.
getBarcode
().
getBarcode
();
String
num
=
codeBean
.
getBarcode
().
getAmount
()+
""
;
String
[]
resposArr
=
new
String
[]{
"TestCheckMaterial"
,
command
.
getEventId
(),
"0"
,
"OK"
,
pn
,
reelId
,
num
,
"1"
,
"LC01"
};
try
{
handleCheckMaterialResp
(
respCommand
,
resposArr
);
return
ResultBean
.
newOkResult
(
""
);
}
catch
(
ValidateException
e
)
{
log
.
error
(
e
);
return
ResultBean
.
newErrorResult
(
1
,
e
.
getMsgKey
(),
e
.
getDefaultMsg
());
}
}
...
...
@@ -277,6 +312,7 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
return
;
}
String
groupId
=
requestCommand
.
getGroupId
();
String
storageId
=
requestCommand
.
getStorageId
();
String
loginUser
=
requestCommand
.
getLoginUser
();
String
fullCode
=
requestCommand
.
getData
().
toString
();
if
(
respCommand
.
isOkResp
()){
...
...
@@ -326,8 +362,16 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
dataLog
.
setNum
(
barcode
.
getAmount
());
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
dataLog
.
setGroupId
(
groupId
);
dataLog
.
setStorageId
(
storageId
);
dataLog
.
setMemo
(
barcode
.
getMemo
());
dataLog
.
setOperator
(
loginUser
);
if
(
ObjectUtil
.
isNotEmpty
(
storageId
)){
Storage
storage
=
dataCache
.
getStorageById
(
storageId
);
if
(
storage
!=
null
){
dataLog
.
setCid
(
storage
.
getCid
());
dataLog
.
setStorageName
(
storage
.
getName
());
}
}
try
{
taskService
.
addTaskToExecute
(
dataLog
);
ResultBean
okResult
=
ResultBean
.
newOkResult
(
"checking material is ok: "
+
messageText
);
...
...
src/main/java/com/neotel/smfcore/hella/rest/HellaSensorShelfController.java
查看文件 @
e70c650
package
com
.
neotel
.
smfcore
.
hella
.
rest
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
...
...
@@ -91,7 +92,7 @@ public class HellaSensorShelfController {
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
isPutInTask
()
&&
queueTask
.
isWait
())
{
if
(
groupId
!=
null
&&
queueTask
.
getGroupId
().
equals
(
groupId
))
{
if
(
ObjectUtil
.
isEmpty
(
storageId
)&&
groupId
!=
null
&&
queueTask
.
getGroupId
().
equals
(
groupId
))
{
log
.
info
(
"codeIn ["
+
code
+
"]["
+
groupId
+
"]入库失败:条码["
+
queueTask
.
getBarcode
()
+
"]的任务还未结束 "
);
throw
new
ValidateException
(
"smfcore.unfinished"
,
"the task of [{0}] is unfinished"
,
new
String
[]{
queueTask
.
getBarcode
()});
}
...
...
src/main/java/com/neotel/smfcore/hella/tcp/command/HellaReqCommand.java
查看文件 @
e70c650
...
...
@@ -11,9 +11,13 @@ public class HellaReqCommand extends HellaCommand {
private
String
groupId
;
/**
*
料仓Id
;
*
用户名
;
*/
private
String
loginUser
;
/**
* 料仓ID
*/
private
String
storageId
;
/**
* 检查物料条码
...
...
@@ -65,4 +69,12 @@ public class HellaReqCommand extends HellaCommand {
public
void
setGroupId
(
String
groupId
)
{
this
.
groupId
=
groupId
;
}
public
String
getStorageId
()
{
return
storageId
;
}
public
void
setStorageId
(
String
storageId
)
{
this
.
storageId
=
storageId
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论