Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 82f882ba
由
sunke
编写于
2022-11-21 14:05:00 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1 扫码后增加请求超时提醒
2 页面有时会刷不出来料架的问题 3 库位有料常亮灯功能关闭,解决透明盘问题 4 工单出库时不使用红色灯 5 出仓时忽略已存在任务,其他任务继续执行
1 个父辈
3cfc2df1
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
78 行增加
和
45 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
src/main/java/com/neotel/smfcore/core/order/enums/ORDER_COLOR.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialController.java
src/main/java/com/neotel/smfcore/custom/hella/handler/HellaServiceHandler.java
src/main/resources/config/application.yml
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
查看文件 @
82f882b
...
@@ -82,12 +82,14 @@ public class NLPShelfHandler extends BaseDeviceHandler {
...
@@ -82,12 +82,14 @@ public class NLPShelfHandler extends BaseDeviceHandler {
for
(
DataLog
queueTask
:
queueTasks
)
{
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
isPutInTask
()
&&
(
queueTask
.
isWait
()
||
queueTask
.
isExecuting
()))
{
if
(
queueTask
.
isPutInTask
()
&&
(
queueTask
.
isWait
()
||
queueTask
.
isExecuting
()))
{
if
(!
Strings
.
isNullOrEmpty
(
groupId
)
&&
queueTask
.
getGroupId
().
equals
(
groupId
))
{
if
(!
Strings
.
isNullOrEmpty
(
groupId
)
&&
queueTask
.
getGroupId
().
equals
(
groupId
))
{
log
.
info
(
"codeIn ["
+
code
+
"]["
+
groupId
+
"]入库失败:条码["
+
queueTask
.
getBarcode
()
+
"]的任务还未结束 "
);
log
.
info
(
"codeIn ["
+
code
+
"]["
+
groupId
+
"]入库时取消条码["
+
queueTask
.
getBarcode
()
+
"]的未完成入库任务"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.unfinished"
,
"the task of [{0}] is unfinished"
,
new
String
[]{
queueTask
.
getBarcode
()});
//return ResultBean.newErrorResult(-1,"smfcore.unfinished","the task of [{0}] is unfinished",new String[]{queueTask.getBarcode()});
taskService
.
cancelTask
(
queueTask
.
getId
());
}
}
if
(!
Strings
.
isNullOrEmpty
(
storageId
)
&&
queueTask
.
getStorageId
().
equals
(
storageId
))
{
if
(!
Strings
.
isNullOrEmpty
(
storageId
)
&&
queueTask
.
getStorageId
().
equals
(
storageId
))
{
log
.
info
(
"codeIn ["
+
code
+
"]["
+
storageId
+
"]入库失败:料架["
+
queueTask
.
getStorageId
()
+
"]的任务还未结束 "
);
log
.
info
(
"codeIn ["
+
code
+
"]["
+
storageId
+
"]入库时取消料架["
+
queueTask
.
getStorageId
()
+
"]的未完成入库任务"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.unfinished"
,
"the task of [{0}] is unfinished"
,
new
String
[]{
queueTask
.
getStorageName
()});
//return ResultBean.newErrorResult(-1,"smfcore.unfinished","the task of [{0}] is unfinished",new String[]{queueTask.getStorageName()});
taskService
.
cancelTask
(
queueTask
.
getId
());
}
}
}
}
}
}
...
@@ -317,7 +319,7 @@ public class NLPShelfHandler extends BaseDeviceHandler {
...
@@ -317,7 +319,7 @@ public class NLPShelfHandler extends BaseDeviceHandler {
List
<
String
>
newList
=
new
ArrayList
<>();
List
<
String
>
newList
=
new
ArrayList
<>();
for
(
String
posName
:
hasReelPosList
)
{
for
(
String
posName
:
hasReelPosList
)
{
if
(
disabledPosNameSet
.
contains
(
posName
)){
if
(
disabledPosNameSet
.
contains
(
posName
)){
log
.
info
(
cid
+
"sensorChange hasReelPosList ["
+
posName
+
"]库位被禁用,忽略"
);
//
log.info(cid + "sensorChange hasReelPosList [" + posName + "]库位被禁用,忽略");
continue
;
continue
;
}
else
if
(
usedPosList
.
contains
(
posName
)){
}
else
if
(
usedPosList
.
contains
(
posName
)){
log
.
info
(
cid
+
"sensorChange hasReelPosList ["
+
posName
+
"]库位已有物料,加入到ok列表"
);
log
.
info
(
cid
+
"sensorChange hasReelPosList ["
+
posName
+
"]库位已有物料,加入到ok列表"
);
...
@@ -513,8 +515,8 @@ public class NLPShelfHandler extends BaseDeviceHandler {
...
@@ -513,8 +515,8 @@ public class NLPShelfHandler extends BaseDeviceHandler {
}
}
}
}
String
hasReelPosColor
=
"o
range
"
;
String
hasReelPosColor
=
"o
ff
"
;
//hasReelPosColor = ORDER_COLOR.DARK
GREEN.name().toLowerCase();
hasReelPosColor
=
ORDER_COLOR
.
FOREST
GREEN
.
name
().
toLowerCase
();
// if(lightPosCidList.contains(cid)){
// if(lightPosCidList.contains(cid)){
// hasReelPosColor = ORDER_COLOR.LIGHTBLUE.name();
// hasReelPosColor = ORDER_COLOR.LIGHTBLUE.name();
// }
// }
...
...
src/main/java/com/neotel/smfcore/core/kanban/rest/BoxKanbanController.java
查看文件 @
82f882b
...
@@ -56,7 +56,6 @@ import java.util.regex.Pattern;
...
@@ -56,7 +56,6 @@ import java.util.regex.Pattern;
@RestController
@RestController
@RequiredArgsConstructor
@RequiredArgsConstructor
@Api
(
tags
=
"BOX看板"
)
@Api
(
tags
=
"BOX看板"
)
@RequestMapping
(
"api/boxkanban"
)
public
class
BoxKanbanController
{
public
class
BoxKanbanController
{
@Autowired
@Autowired
...
@@ -76,7 +75,7 @@ public class BoxKanbanController {
...
@@ -76,7 +75,7 @@ public class BoxKanbanController {
@ApiOperation
(
"获取看板数据"
)
@ApiOperation
(
"获取看板数据"
)
@GetMapping
@GetMapping
(
"api/boxkanban"
)
@PreAuthorize
(
"@el.check('boxkanban:info')"
)
@PreAuthorize
(
"@el.check('boxkanban:info')"
)
public
BoxKanbanDto
info
(
HttpServletRequest
servletRequest
)
{
public
BoxKanbanDto
info
(
HttpServletRequest
servletRequest
)
{
...
@@ -121,7 +120,7 @@ public class BoxKanbanController {
...
@@ -121,7 +120,7 @@ public class BoxKanbanController {
}
}
@ApiOperation
(
"查询看板任务列表"
)
@ApiOperation
(
"查询看板任务列表"
)
@GetMapping
(
"/task"
)
@GetMapping
(
"
api/boxkanban
/task"
)
@PreAuthorize
(
"@el.check('boxkanban:list')"
)
@PreAuthorize
(
"@el.check('boxkanban:list')"
)
public
PageData
<
BoxTaskDto
>
info
(
BoxTaskQueryCriter
criteria
,
Pageable
pageable
)
{
public
PageData
<
BoxTaskDto
>
info
(
BoxTaskQueryCriter
criteria
,
Pageable
pageable
)
{
if
(
criteria
.
getType
()!=
null
&&
criteria
.
getType
().
equals
(
0
)
){
if
(
criteria
.
getType
()!=
null
&&
criteria
.
getType
().
equals
(
0
)
){
...
@@ -246,7 +245,7 @@ public class BoxKanbanController {
...
@@ -246,7 +245,7 @@ public class BoxKanbanController {
}
}
@ApiOperation
(
"料仓详情"
)
@ApiOperation
(
"料仓详情"
)
@GetMapping
(
"/boxView"
)
@GetMapping
(
"
api/boxkanban
/boxView"
)
@PreAuthorize
(
"@el.check('boxkanban:boxView')"
)
@PreAuthorize
(
"@el.check('boxkanban:boxView')"
)
public
BoxStatusDto
boxView
(
String
id
,
HttpServletRequest
servletRequest
)
{
public
BoxStatusDto
boxView
(
String
id
,
HttpServletRequest
servletRequest
)
{
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
...
@@ -259,7 +258,7 @@ public class BoxKanbanController {
...
@@ -259,7 +258,7 @@ public class BoxKanbanController {
}
}
@ApiOperation
(
"保存界面的一些操作"
)
@ApiOperation
(
"保存界面的一些操作"
)
@AnonymousPutMapping
(
"/saveOp"
)
@AnonymousPutMapping
(
"
api/boxkanban
/saveOp"
)
public
ResultBean
saveOp
(
@RequestBody
Map
<
String
,
String
>
params
)
{
public
ResultBean
saveOp
(
@RequestBody
Map
<
String
,
String
>
params
)
{
String
cid
=
params
.
get
(
"cid"
);
String
cid
=
params
.
get
(
"cid"
);
if
(!
Strings
.
isNullOrEmpty
(
cid
)){
if
(!
Strings
.
isNullOrEmpty
(
cid
)){
...
@@ -273,7 +272,7 @@ public class BoxKanbanController {
...
@@ -273,7 +272,7 @@ public class BoxKanbanController {
}
}
@ApiOperation
(
"获取料架库位报警列表"
)
@ApiOperation
(
"获取料架库位报警列表"
)
@GetMapping
(
"/shelfPosErrors"
)
@GetMapping
(
"
api/boxkanban
/shelfPosErrors"
)
@PreAuthorize
(
"@el.check('boxkanban:list')"
)
@PreAuthorize
(
"@el.check('boxkanban:list')"
)
public
List
<
ShelfPosErrorDto
>
shelfPosErrors
(
String
storageId
,
String
groupId
)
{
public
List
<
ShelfPosErrorDto
>
shelfPosErrors
(
String
storageId
,
String
groupId
)
{
// String storageId=map.get("storageId");
// String storageId=map.get("storageId");
...
@@ -362,7 +361,7 @@ public class BoxKanbanController {
...
@@ -362,7 +361,7 @@ public class BoxKanbanController {
@ApiOperation
(
"清除报警库位物料"
)
@ApiOperation
(
"清除报警库位物料"
)
@PutMapping
(
"/clearPos"
)
@PutMapping
(
"
api/boxkanban
/clearPos"
)
@PreAuthorize
(
"@el.check('storagePos:edit')"
)
@PreAuthorize
(
"@el.check('storagePos:edit')"
)
public
ResultBean
clearPos
(
@RequestBody
String
posName
)
{
public
ResultBean
clearPos
(
@RequestBody
String
posName
)
{
...
...
src/main/java/com/neotel/smfcore/core/order/enums/ORDER_COLOR.java
查看文件 @
82f882b
...
@@ -70,7 +70,9 @@ public enum ORDER_COLOR {
...
@@ -70,7 +70,9 @@ public enum ORDER_COLOR {
public
static
ORDER_COLOR
nextColor
(
Collection
<
String
>
excludeColors
){
public
static
ORDER_COLOR
nextColor
(
Collection
<
String
>
excludeColors
){
excludeColors
.
add
(
ORDER_COLOR
.
BLUE
.
getRgb
());
//手动出库
excludeColors
.
add
(
ORDER_COLOR
.
BLUE
.
getRgb
());
//手动出库
excludeColors
.
add
(
ORDER_COLOR
.
DARKGREEN
.
getRgb
());
//入库
excludeColors
.
add
(
ORDER_COLOR
.
DARKGREEN
.
getRgb
());
//入库
excludeColors
.
add
(
ORDER_COLOR
.
FORESTGREEN
.
getRgb
());
//入库
excludeColors
.
add
(
ORDER_COLOR
.
FIREBRICK
.
getRgb
());
//异常红灯
excludeColors
.
add
(
ORDER_COLOR
.
INDIANRED
.
getRgb
());
//异常红灯
ORDER_COLOR
[]
allColors
=
values
();
ORDER_COLOR
[]
allColors
=
values
();
if
(
excludeColors
.
size
()
>=
allColors
.
length
){
if
(
excludeColors
.
size
()
>=
allColors
.
length
){
return
null
;
return
null
;
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialController.java
查看文件 @
82f882b
...
@@ -196,7 +196,7 @@ public class MaterialController {
...
@@ -196,7 +196,7 @@ public class MaterialController {
if
(
criteria
.
getGroupId
().
equals
(
"0"
)||
criteria
.
getGroupId
().
equals
(
""
)){
if
(
criteria
.
getGroupId
().
equals
(
"0"
)||
criteria
.
getGroupId
().
equals
(
""
)){
criteria
.
setGroupId
(
null
);
criteria
.
setGroupId
(
null
);
}
else
{
}
else
{
criteria
.
setStorageIdList
(
dataCache
.
getStorageIdsByGroupId
(
criteria
.
getGroupId
(),
false
));
criteria
.
setStorageIdList
(
dataCache
.
getStorageIdsByGroupId
(
criteria
.
getGroupId
(),
false
));
}
}
}
}
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
Query
query
=
QueryHelp
.
getQuery
(
criteria
);
...
@@ -273,19 +273,21 @@ public class MaterialController {
...
@@ -273,19 +273,21 @@ public class MaterialController {
}
}
for
(
String
posId
:
posIds
)
{
for
(
String
posId
:
posIds
)
{
StoragePos
pos
=
storagePosManager
.
get
(
posId
);
try
{
if
(
pos
==
null
)
{
StoragePos
pos
=
storagePosManager
.
get
(
posId
);
throw
new
ValidateException
(
"smfcore.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"posId"
,
posId
});
if
(
pos
!=
null
)
{
}
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
==
null
)
{
if
(
storage
==
null
)
{
log
.
error
(
"storageId["
+
pos
.
getStorageId
()+
"]不存在,忽略posId="
+
posId
+
"的任务"
);
throw
new
ValidateException
(
"smfcore.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"storageId"
,
pos
.
getStorageId
()});
}
else
{
}
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
taskService
.
checkout
(
storage
,
pos
,
true
,
SecurityUtils
.
getCurrentUsername
());
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
}
String
outResult
=
taskService
.
checkout
(
storage
,
pos
,
true
,
SecurityUtils
.
getCurrentUsername
());
}
else
{
if
(!
Strings
.
isNullOrEmpty
(
outResult
))
{
log
.
error
(
"posId["
+
posId
+
"]不存在,忽略posId="
+
posId
+
"的任务"
);
throw
new
ValidateException
(
"smfcore.error"
,
outResult
);
}
}
catch
(
Exception
e
){
log
.
error
(
"标签出库库位"
+
posId
+
"时出错"
+
e
.
getMessage
());
}
}
}
}
}
else
{
}
else
{
...
@@ -296,24 +298,23 @@ public class MaterialController {
...
@@ -296,24 +298,23 @@ public class MaterialController {
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
if
(
posList
.
size
()
<=
0
)
{
if
(
posList
.
size
()
<=
0
)
{
//未找到出库信息
//未找到出库信息
throw
new
ValidateException
(
"smfcore.label.noReel"
,
"
未找到可出库的物料"
);
log
.
info
(
"出库标签["
+
labelId
+
"]时
未找到可出库的物料"
);
}
}
for
(
StoragePos
pos
:
posList
for
(
StoragePos
pos
:
posList
)
{
)
{
try
{
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
==
null
)
{
if
(
storage
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"storageId"
,
pos
.
getStorageId
()});
log
.
error
(
"storageId["
+
pos
.
getStorageId
()+
"]不存在,忽略posId="
+
pos
.
getId
()+
"的任务"
);
}
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
taskService
.
checkout
(
storage
,
pos
,
true
,
SecurityUtils
.
getCurrentUsername
());
}
catch
(
Exception
e
){
log
.
error
(
"标签出库库位"
+
pos
.
getPosName
()+
"时出错"
+
e
.
getMessage
());
}
}
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
String
outResult
=
taskService
.
checkout
(
storage
,
pos
,
true
,
SecurityUtils
.
getCurrentUsername
());
if
(!
Strings
.
isNullOrEmpty
(
outResult
))
{
throw
new
ValidateException
(
"smfcore.error"
,
outResult
);
}
}
}
}
}
return
ResultBean
.
newOkResult
(
"ok"
);
return
ResultBean
.
newOkResult
(
"ok"
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/hella/handler/HellaServiceHandler.java
查看文件 @
82f882b
...
@@ -47,6 +47,7 @@ import org.springframework.stereotype.Service;
...
@@ -47,6 +47,7 @@ import org.springframework.stereotype.Service;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.atomic.AtomicLong
;
import
java.util.concurrent.atomic.AtomicLong
;
/**
/**
...
@@ -135,13 +136,41 @@ public class HellaServiceHandler extends BaseSmfApiListener implements IoHandler
...
@@ -135,13 +136,41 @@ public class HellaServiceHandler extends BaseSmfApiListener implements IoHandler
}
}
commandMap
.
put
(
command
.
getEventId
(),
command
);
commandMap
.
put
(
command
.
getEventId
(),
command
);
log
.
info
(
"发送检查物料条码请求:"
+
command
.
toReqMsg
());
log
.
info
(
"发送检查物料条码请求:"
+
command
.
toReqMsg
());
ResultBean
resultBean
=
HellaTcpClient
.
sendMsg
(
command
.
toReqMsg
());
ResultBean
resultBean
=
HellaTcpClient
.
sendMsg
(
command
.
toReqMsg
());
// ResultBean resultBean = testCheckOK(command);
// ResultBean resultBean = testCheckOK(command);
resultBean
.
setMsg
(
"Check Material result:"
+
resultBean
.
getMsg
());
resultBean
.
setMsg
(
"Check Material result:"
+
resultBean
.
getMsg
());
waitCheckMaterialResult
(
command
);
return
resultBean
;
return
resultBean
;
}
}
/**
* 等待指令请求返回超时
*/
public
void
waitCheckMaterialResult
(
HellaReqCommand
reqCommand
){
try
{
long
sleepTime
=
10
;
long
waitTime
=
0
;
boolean
timeOut
=
true
;
while
(
waitTime
<
1500
){
waitTime
=
waitTime
+
sleepTime
;
TimeUnit
.
MILLISECONDS
.
sleep
(
sleepTime
);
HellaReqCommand
command
=
commandMap
.
get
(
reqCommand
.
getEventId
());
if
(
command
==
null
){
timeOut
=
false
;
break
;
}
}
if
(
timeOut
){
ResultBean
ngResult
=
ResultBean
.
newErrorResult
(
408
,
"smfcore.checkMaterial.timeOut"
,
"checkMaterial timeout,event Id:{0}"
,
new
String
[]{
reqCommand
.
getEventId
()}
);
WebSocketServer
.
sendMsg
(
new
SocketMsg
(
Lists
.
newArrayList
(
reqCommand
.
getLoginUser
()),
ngResult
.
getMsg
(),
MsgType
.
ERROR
,
ngResult
.
getMsgKey
(),
ngResult
.
getParams
()));
}
}
catch
(
Exception
e
){
log
.
error
(
"waitCheckMaterialResult Error"
,
e
);
}
}
@Override
@Override
...
...
src/main/resources/config/application.yml
查看文件 @
82f882b
...
@@ -2,15 +2,15 @@ server:
...
@@ -2,15 +2,15 @@ server:
port
:
8800
port
:
8800
api
:
api
:
name
:
Neotel
name
:
Hella
inCheckUrl
:
inCheckUrl
:
outNotifyUrl
:
outNotifyUrl
:
inNotifyUrl
:
inNotifyUrl
:
#
codeResolveUrl: hellaCodeResolve
codeResolveUrl
:
hellaCodeResolve
hella
:
hella
:
#
host: 127.0.0.1
host
:
127.0.0.1
#
port: 3333
port
:
3333
# 文件存储路径
# 文件存储路径
file
:
file
:
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论