Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 1f8f5679
由
LN
编写于
2021-11-08 10:31:54 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
料仓增加SMD_XLC类型,菜单增加料盒操作
1 个父辈
0f1b1f48
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
173 行增加
和
4 行删除
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/LineBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/XLCBoxHandler.java
src/main/java/com/neotel/smfcore/core/storage/enums/DeviceType.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
1f8f567
...
...
@@ -192,10 +192,11 @@ public class DataInitManager {
Menu
celueOut
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"tacticsOuput"
,
"策略出库"
,
1
,
"tacticsOuput"
,
"neolight/tacticsOuput/index"
,
""
,
0
,
"workOrder"
);
Menu
groupOut
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"labelOuput"
,
"物料分组"
,
1
,
"labelOuput"
,
"neolight/labelOuput/index"
,
""
,
0
,
"export1"
);
Menu
manualOut
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"manualOut"
,
"手动出库"
,
1
,
"manualOut"
,
"neolight/manualOut/index"
,
""
,
0
,
"export1"
);
Menu
materialBox
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"materialBox"
,
"料盒操作"
,
1
,
"materialBox"
,
"neolight/materialBox/index"
,
""
,
0
,
"export1"
);
celueOut
.
setHidden
(
true
);
groupOut
.
setHidden
(
true
);
manualOut
.
setHidden
(
true
);
menus
.
addAll
(
createMenus
(
poutOut
,
menuOrder
,
menuOut
,
celueOut
,
groupOut
,
manualOut
));
menus
.
addAll
(
createMenus
(
poutOut
,
menuOrder
,
menuOut
,
celueOut
,
groupOut
,
manualOut
,
materialBox
));
//设置:料仓管理,菜单管理
Menu
poutSet
=
Menu
.
CreatePMenu
(
"设置"
,
30
,
"system"
,
2
,
"system"
);
...
...
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
查看文件 @
1f8f567
...
...
@@ -136,10 +136,10 @@ public class StatusBean {
}
/**
* 是否超时(
3
秒)
* 是否超时(
10
秒)
*/
public
boolean
timeOut
(){
return
System
.
currentTimeMillis
()
-
time
>
10
*
1000
;
return
(
System
.
currentTimeMillis
()
-
time
)
>(
10
*
1000
)
;
}
/**
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/LineBoxHandler.java
0 → 100644
查看文件 @
1f8f567
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
.
impl
;
import
com.neotel.smfcore.core.device.api.IOpAuthApi
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
@Slf4j
public
class
LineBoxHandler
extends
BaseDeviceHandler
{
public
LineBoxHandler
(
List
<
IOpAuthApi
>
apiList
)
{
super
(
apiList
);
}
@Override
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
LINE
;
}
}
src/main/java/com/neotel/smfcore/core/device/handler/impl/XLCBoxHandler.java
0 → 100644
查看文件 @
1f8f567
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
.
impl
;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.core.device.api.IOpAuthApi
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.enums.BOX_STATUS
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
@Service
@Slf4j
public
class
XLCBoxHandler
extends
BaseDeviceHandler
{
public
XLCBoxHandler
(
List
<
IOpAuthApi
>
apiList
)
{
super
(
apiList
);
}
/**
* 当前出入库操作的库位(key为cid, value为当前执行的任务)
*/
private
Map
<
String
,
DataLog
>
operateTaskMap
=
new
ConcurrentHashMap
<>();
/**
* 获取当前正在执行的任务
*/
public
DataLog
getCurrentTask
(
String
cid
){
return
operateTaskMap
.
get
(
cid
);
}
/**
* 更新或清理(task为null)当前正在执行的任务
*/
public
void
updateCurrentTask
(
String
cid
,
DataLog
task
){
if
(
task
==
null
){
operateTaskMap
.
remove
(
cid
);
}
else
{
operateTaskMap
.
put
(
cid
,
task
);
}
}
@Override
public
StatusBean
handleClientRequest
(
StatusBean
statusBean
,
HttpServletRequest
request
)
{
handleMsg
(
statusBean
);
statusBean
=
saveAlarmAndHumidity
(
statusBean
);
statusBean
=
handleXLCStatusBean
(
statusBean
);
statusBean
=
handleInOutFinished
(
statusBean
);
StatusBean
humidityResult
=
handleHumidity
(
statusBean
);
if
(
humidityResult
!=
null
){
return
humidityResult
;
}
return
statusBean
;
}
private
StatusBean
handleXLCStatusBean
(
StatusBean
statusBean
){
String
cid
=
statusBean
.
getCid
();
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
(
cid
);
Map
<
String
,
BoxStatusBean
>
statusOfBoxes
=
statusBean
.
getBoxStatus
();
if
(
statusOfBoxes
!=
null
)
{
for
(
BoxStatusBean
boxStatus
:
statusOfBoxes
.
values
())
{
try
{
//出库入库动作完成处理
int
status
=
boxStatus
.
getStatus
();
String
posName
=
boxStatus
.
getPosId
();
if
(!
Strings
.
isNullOrEmpty
(
posName
)){
//客户端发一次完成之后,会发空的 posName,不需要处理
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成,设置当前任务
DataLog
currentTask
=
null
;
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
isExecuting
()
&&
queueTask
.
getPosName
().
equals
(
posName
)){
currentTask
=
queueTask
;
String
doorInfo
=
statusBean
.
getFromData
(
"door"
);
if
(
doorInfo
==
null
){
doorInfo
=
"1"
;
}
currentTask
.
setSubSourceId
(
doorInfo
);
taskService
.
updateQueueTask
(
currentTask
);
break
;
}
}
DataLog
cacheTask
=
operateTaskMap
.
get
(
cid
);
if
(
currentTask
!=
null
){
if
(
cacheTask
==
null
||
!
cacheTask
.
getId
().
equals
(
currentTask
.
getId
())){
updateCurrentTask
(
currentTask
.
getCid
(),
currentTask
);
}
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"方仓到位时出错"
,
e
);
}
}
}
if
(
statusBean
.
getStatus
()
==
StorageConstants
.
STATUS
.
READY
){
DataLog
currentTask
=
getCurrentTask
(
cid
);
if
(
currentTask
!=
null
){
//当前有任务未完成,暂不执行其他任务
return
statusBean
;
}
for
(
DataLog
task
:
queueTasks
)
{
if
(
cid
.
equals
(
task
.
getCid
())
&&
task
.
isWait
())
{
StoragePos
pos
=
storagePosManager
.
getByPosName
(
task
.
getPosName
());
if
(
pos
.
isExpandPos
()){
continue
;
}
if
(
task
.
isPutInTask
()){
statusBean
.
setOp
(
OP
.
PUT_IN
);
statusBean
.
addData
(
"door"
,
task
.
getSubSourceId
());
}
else
if
(
task
.
isCheckOutTask
()){
statusBean
.
setOp
(
OP
.
CHECKOUT
);
}
statusBean
.
addPosInfo
(
""
,
pos
.
getPosName
(),
pos
.
getW
(),
pos
.
getH
(),
false
);
log
.
info
(
"发送["
+
task
.
getType
()+
"]任务["
+
pos
.
getPosName
()+
"]到客户端door="
+
task
.
getSubSourceId
());
task
.
setStatus
(
OP_STATUS
.
EXECUTING
.
name
());
taskService
.
updateQueueTask
(
task
);
return
statusBean
;
}
}
}
return
statusBean
;
}
@Override
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
SMD_XLC
;
}
}
src/main/java/com/neotel/smfcore/core/storage/enums/DeviceType.java
查看文件 @
1f8f567
...
...
@@ -89,9 +89,13 @@ public enum DeviceType {
* 13 SMD-DUO(DUO料仓)
*/
SMD_DUO
(
"storage.type.smdDuo"
),
/**
* 14 放料箱的方仓
*/
SMD_XLC
(
"storage.type.smdXlc"
),
/**
* 1
4
(默认料仓)
* 1
5
(默认料仓)
*/
DEFAULT
(
"storage.type.default"
)
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论