Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 839f0fb4
由
LN
编写于
2024-01-10 15:18:50 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加NS200看板
1 个父辈
13d6993a
隐藏空白字符变更
内嵌
并排
正在显示
20 个修改的文件
包含
332 行增加
和
40 行删除
src/main/java/com/neotel/smfcore/common/init/MenuInit.java
src/main/java/com/neotel/smfcore/core/dashboard/bean/dto/first/ElecKanbanBoxStatusDto.java
src/main/java/com/neotel/smfcore/core/dashboard/box/SmdBoxController.java
src/main/java/com/neotel/smfcore/core/equipment/bean/EquipStatusBean.java
src/main/java/com/neotel/smfcore/core/equipment/bean/ns/NsMesInfo.java
src/main/java/com/neotel/smfcore/core/equipment/handler/impl/BaseEquipHandler.java
src/main/java/com/neotel/smfcore/core/equipment/rest/EquipCommunicationController.java
src/main/java/com/neotel/smfcore/core/equipment/rest/EquipViewController.java
src/main/java/com/neotel/smfcore/core/equipment/bean/EquipStatusDto.java → src/main/java/com/neotel/smfcore/core/equipment/rest/dto/EquipStatusDto.java
src/main/java/com/neotel/smfcore/core/equipment/rest/dto/NsViewDto.java
src/main/java/com/neotel/smfcore/core/device/util/EquipmentCache.java → src/main/java/com/neotel/smfcore/core/equipment/util/EquipmentCache.java
src/main/java/com/neotel/smfcore/core/message/util/DeviceMessageUtil.java
src/main/java/com/neotel/smfcore/core/solder/rest/SpBoxController.java
src/main/java/com/neotel/smfcore/core/system/util/EquipStatusUtil.java
src/main/java/com/neotel/smfcore/custom/duo/DuoController.java
src/main/resources/messages.properties
src/main/resources/messages_en_US.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/init/MenuInit.java
查看文件 @
839f0fb
...
@@ -148,8 +148,8 @@ public class MenuInit {
...
@@ -148,8 +148,8 @@ public class MenuInit {
addDefaultFunctionMenu
(
9
,
poutOut
,
"入库单"
,
"inList"
,
"system/inList/index"
,
"headIcon"
);
addDefaultFunctionMenu
(
9
,
poutOut
,
"入库单"
,
"inList"
,
"system/inList/index"
,
"headIcon"
);
addDefaultFunctionMenu
(
10
,
poutOut
,
"物料入库"
,
"putIn"
,
"system/putIn/index"
,
"headIcon"
);
addDefaultFunctionMenu
(
10
,
poutOut
,
"物料入库"
,
"putIn"
,
"system/putIn/index"
,
"headIcon"
);
addDefaultFunctionMenu
(
11
,
poutOut
,
"转储入库"
,
"dumpWarehousing"
,
"system/dumpWarehousing/index"
,
"headIcon"
);
//
addDefaultFunctionMenu(11, poutOut, "转储入库", "dumpWarehousing", "system/dumpWarehousing/index", "headIcon");
addDefaultFunctionMenu
(
12
,
poutOut
,
"单盘入库"
,
"singleDiskWarehousing"
,
"system/singleDiskWarehousing/index"
,
"headIcon"
);
//
addDefaultFunctionMenu(12, poutOut, "单盘入库", "singleDiskWarehousing", "system/singleDiskWarehousing/index", "headIcon");
addDefaultFunctionMenu
(
13
,
poutOut
,
"呆滞物料"
,
"sluggishMaterials"
,
"system/sluggishMaterials/index"
,
"sMaterial"
);
addDefaultFunctionMenu
(
13
,
poutOut
,
"呆滞物料"
,
"sluggishMaterials"
,
"system/sluggishMaterials/index"
,
"sMaterial"
);
addDefaultFunctionMenu
(
14
,
poutOut
,
"安全库存"
,
"safetyInventory"
,
"system/safetyInventory/index"
,
"safeInventory"
);
addDefaultFunctionMenu
(
14
,
poutOut
,
"安全库存"
,
"safetyInventory"
,
"system/safetyInventory/index"
,
"safeInventory"
);
addDefaultFunctionMenu
(
15
,
poutOut
,
"过期物料"
,
"expireMaterials"
,
"system/expireMaterials/index"
,
"sMaterial"
);
addDefaultFunctionMenu
(
15
,
poutOut
,
"过期物料"
,
"expireMaterials"
,
"system/expireMaterials/index"
,
"sMaterial"
);
...
...
src/main/java/com/neotel/smfcore/core/dashboard/bean/dto/first/ElecKanbanBoxStatusDto.java
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
core
.
dashboard
.
bean
.
dto
.
first
;
package
com
.
neotel
.
smfcore
.
core
.
dashboard
.
bean
.
dto
.
first
;
import
com.neotel.smfcore.core.storage.bean.UsageItem
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -13,6 +14,8 @@ import java.util.Map;
...
@@ -13,6 +14,8 @@ import java.util.Map;
public
class
ElecKanbanBoxStatusDto
{
public
class
ElecKanbanBoxStatusDto
{
private
String
id
;
private
String
id
;
private
String
cid
;
/**
/**
* 设备名称
* 设备名称
*/
*/
...
@@ -69,5 +72,9 @@ public class ElecKanbanBoxStatusDto {
...
@@ -69,5 +72,9 @@ public class ElecKanbanBoxStatusDto {
private
float
maxHumidity
=
100.0
F
;
private
float
maxHumidity
=
100.0
F
;
@ApiModelProperty
(
"客户端上传数据,closeLock为enable时此按钮状态为可用,openLock为enable时,此按钮状态为可用"
+
@ApiModelProperty
(
"客户端上传数据,closeLock为enable时此按钮状态为可用,openLock为enable时,此按钮状态为可用"
+
"客户端收到服务器openLock为doit时,执行打开门锁动作,closeLock为doit时,执行关闭门锁"
)
"客户端收到服务器openLock为doit时,执行打开门锁动作,closeLock为doit时,执行关闭门锁"
)
private
Map
<
String
,
String
>
data
=
new
HashMap
<>();
private
Map
<
String
,
String
>
data
=
null
;
@ApiModelProperty
(
"使用情况"
)
private
Map
<
String
,
UsageItem
>
usageMap
=
null
;
}
}
src/main/java/com/neotel/smfcore/core/dashboard/box/SmdBoxController.java
查看文件 @
839f0fb
...
@@ -129,6 +129,7 @@ public class SmdBoxController {
...
@@ -129,6 +129,7 @@ public class SmdBoxController {
dto
.
setTodayOutCount
(
outCount
);
dto
.
setTodayOutCount
(
outCount
);
dto
.
setName
(
storage
.
getName
());
dto
.
setName
(
storage
.
getName
());
dto
.
setId
(
storage
.
getId
());
dto
.
setId
(
storage
.
getId
());
dto
.
setCid
(
storage
.
getCid
());
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
(
cid
);
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
(
cid
);
if
(
queueTasks
!=
null
){
if
(
queueTasks
!=
null
){
dto
.
setTaskList
((
List
<
DataLog
>)
queueTasks
);
dto
.
setTaskList
((
List
<
DataLog
>)
queueTasks
);
...
@@ -140,6 +141,7 @@ public class SmdBoxController {
...
@@ -140,6 +141,7 @@ public class SmdBoxController {
dto
.
setMaxHumidity
(
msdSettiings
.
getMaxHumidity
());
dto
.
setMaxHumidity
(
msdSettiings
.
getMaxHumidity
());
dto
.
setMinTemperature
(
msdSettiings
.
getMinTemperature
());
dto
.
setMinTemperature
(
msdSettiings
.
getMinTemperature
());
dto
.
setMaxTemperature
(
msdSettiings
.
getMaxTemperature
());
dto
.
setMaxTemperature
(
msdSettiings
.
getMaxTemperature
());
dto
.
setUsageMap
(
storage
.
getUsageMap
());
resultList
.
add
(
dto
);
resultList
.
add
(
dto
);
}
}
return
resultList
;
return
resultList
;
...
...
src/main/java/com/neotel/smfcore/core/equipment/bean/EquipStatusBean.java
查看文件 @
839f0fb
...
@@ -45,7 +45,16 @@ public class EquipStatusBean implements Serializable {
...
@@ -45,7 +45,16 @@ public class EquipStatusBean implements Serializable {
/**
/**
* 仅显示的日志消息集合
*/
private
List
<
EquipMsg
>
showLogs
=
new
ArrayList
<>();
/**
* 发上来的数据
* 发上来的数据
*
* NS200定义:
* key=tPCount,value=今天已打印数量
* key=tNGCount,value=今天NG数量
* key=MES,value=MES最后一次对接信息:格式参考NsMesInfo
*/
*/
private
Map
<
String
,
Object
>
data
=
new
HashMap
<>();
private
Map
<
String
,
Object
>
data
=
new
HashMap
<>();
...
@@ -114,5 +123,17 @@ public class EquipStatusBean implements Serializable {
...
@@ -114,5 +123,17 @@ public class EquipStatusBean implements Serializable {
return
null
;
return
null
;
}
}
public
String
getShowMsg
(
Locale
locale
){
MessageType
[]
types
=
new
MessageType
[]{
MessageType
.
ERROR
,
MessageType
.
WARNING
,
MessageType
.
INFO
,
MessageType
.
SHOW
};
for
(
MessageType
type
:
types
)
{
EquipMsg
showMsg
=
getMsgByType
(
type
.
name
());
if
(
showMsg
!=
null
){
return
showMsg
.
getShowMsg
(
locale
);
}
}
return
""
;
}
}
}
src/main/java/com/neotel/smfcore/core/equipment/bean/ns/NsMesInfo.java
0 → 100644
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
bean
.
ns
;
import
cn.hutool.core.date.DateTime
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
NsMesInfo
implements
Serializable
{
private
String
status
=
"OK"
;
private
DateTime
time
;
private
String
request
=
""
;
private
String
response
=
""
;
}
src/main/java/com/neotel/smfcore/core/equipment/handler/impl/BaseEquipHandler.java
查看文件 @
839f0fb
...
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
...
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import
com.neotel.smfcore.core.agv.util.AgvCache
;
import
com.neotel.smfcore.core.agv.util.AgvCache
;
import
com.neotel.smfcore.core.equipment.bean.EquipMsg
;
import
com.neotel.smfcore.core.equipment.bean.EquipMsg
;
import
com.neotel.smfcore.core.equipment.bean.EquipStatusBean
;
import
com.neotel.smfcore.core.equipment.bean.EquipStatusBean
;
import
com.neotel.smfcore.core.equipment.bean.ns.NsMesInfo
;
import
com.neotel.smfcore.core.equipment.enums.EquipmentType
;
import
com.neotel.smfcore.core.equipment.enums.EquipmentType
;
import
com.neotel.smfcore.core.equipment.handler.IEquipmentHandler
;
import
com.neotel.smfcore.core.equipment.handler.IEquipmentHandler
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
...
@@ -73,6 +74,18 @@ public class BaseEquipHandler implements IEquipmentHandler {
...
@@ -73,6 +74,18 @@ public class BaseEquipHandler implements IEquipmentHandler {
}
}
}
}
}
}
if
(
statusBean
.
getData
().
containsKey
(
"MES"
))
{
try
{
NsMesInfo
mesInfo
=
(
NsMesInfo
)
statusBean
.
getData
().
get
(
"MES"
);
if
(
mesInfo
!=
null
){
EquipStatusUtil
.
updateNsMesInfo
(
statusBean
.
getCid
(),
mesInfo
);
}
}
catch
(
Exception
ex
)
{
log
.
error
(
""
+
ex
);
}
}
EquipStatusUtil
.
updateStatusBean
(
statusBean
);
EquipStatusUtil
.
updateStatusBean
(
statusBean
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
...
src/main/java/com/neotel/smfcore/core/equipment/rest/EquipCommunicationController.java
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
rest
;
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
rest
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.
device
.util.EquipmentCache
;
import
com.neotel.smfcore.core.
equipment
.util.EquipmentCache
;
import
com.neotel.smfcore.core.equipment.bean.EquipStatusBean
;
import
com.neotel.smfcore.core.equipment.bean.EquipStatusBean
;
import
com.neotel.smfcore.core.equipment.enums.EquipmentType
;
import
com.neotel.smfcore.core.equipment.enums.EquipmentType
;
import
com.neotel.smfcore.core.equipment.handler.IEquipmentHandler
;
import
com.neotel.smfcore.core.equipment.handler.IEquipmentHandler
;
...
...
src/main/java/com/neotel/smfcore/core/equipment/rest/EquipViewController.java
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
rest
;
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
rest
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.EquipmentCache
;
import
com.neotel.smfcore.core.equipment.bean.ns.NsMesInfo
;
import
com.neotel.smfcore.core.equipment.rest.dto.NsViewDto
;
import
com.neotel.smfcore.core.equipment.util.EquipmentCache
;
import
com.neotel.smfcore.core.equipment.bean.EquipMsg
;
import
com.neotel.smfcore.core.equipment.bean.EquipMsg
;
import
com.neotel.smfcore.core.equipment.bean.EquipStatusBean
;
import
com.neotel.smfcore.core.equipment.bean.EquipStatusBean
;
import
com.neotel.smfcore.core.equipment.
bean
.EquipStatusDto
;
import
com.neotel.smfcore.core.equipment.
rest.dto
.EquipStatusDto
;
import
com.neotel.smfcore.core.equipment.service.po.Equipment
;
;
import
com.neotel.smfcore.core.equipment.service.po.Equipment
;
import
com.neotel.smfcore.core.message.enums.MessageType
;
import
com.neotel.smfcore.core.message.enums.MessageType
;
import
com.neotel.smfcore.core.message.service.po.Message
;
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
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
...
@@ -58,26 +60,7 @@ public class EquipViewController {
...
@@ -58,26 +60,7 @@ public class EquipViewController {
}
else
{
}
else
{
dto
.
setOnLine
(
true
);
dto
.
setOnLine
(
true
);
dto
.
setStatus
(
bean
.
getStatus
());
dto
.
setStatus
(
bean
.
getStatus
());
EquipMsg
showMsg
=
bean
.
getMsgByType
(
MessageType
.
ERROR
.
name
());
dto
.
setMsg
(
bean
.
getShowMsg
(
locale
));
if
(
showMsg
==
null
){
showMsg
=
bean
.
getMsgByType
(
MessageType
.
WARNING
.
name
());
}
if
(
showMsg
==
null
){
showMsg
=
bean
.
getMsgByType
(
MessageType
.
INFO
.
name
());
}
if
(
showMsg
==
null
){
showMsg
=
bean
.
getMsgByType
(
MessageType
.
SHOW
.
name
());
}
if
(
showMsg
!=
null
){
dto
.
setMsg
(
showMsg
.
getShowMsg
(
locale
));
}
// if(bean.getMsgList()!=null){
// for (EquipMsg msg : bean.getMsgList()){
// if(msg.getType().equals(MessageType.ERROR.name())){
// dto.setMsg(msg.getShowMsg(locale));
// }
// }
// }
}
}
}
}
...
@@ -102,4 +85,37 @@ public class EquipViewController {
...
@@ -102,4 +85,37 @@ public class EquipViewController {
}
}
return
resultList
;
return
resultList
;
}
}
@ApiOperation
(
"获取看板数据"
)
@GetMapping
(
"nsView"
)
@PreAuthorize
(
"@el.check('equipmentView:info')"
)
public
NsViewDto
nsView
(
String
cid
,
HttpServletRequest
servletRequest
){
Equipment
equip
=
equipmentCache
.
getEquipment
(
cid
);
if
(
equip
==
null
)
{
throw
new
ValidateException
(
"smfcore.equip.notExist"
,
"设备不存在"
);
}
NsViewDto
dto
=
new
NsViewDto
();
dto
.
setCid
(
cid
);
dto
.
setName
(
equip
.
getName
());
EquipStatusBean
bean
=
EquipStatusUtil
.
getStatusBean
(
equip
.
getCid
());
if
(
bean
!=
null
){
if
(
bean
.
timeOut
()){
dto
.
setStatus
(
0
);
}
else
{
dto
.
setStatus
(
bean
.
getStatus
());
dto
.
setMsg
(
bean
.
getShowMsg
(
servletRequest
.
getLocale
()));
dto
.
setData
(
bean
.
getData
());
dto
.
setShowLogs
(
bean
.
getMsgList
());
NsMesInfo
mesInfo
=
EquipStatusUtil
.
getNsMesInfo
(
cid
);
if
(
mesInfo
!=
null
){
dto
.
setMesInfo
(
mesInfo
);
}
}
}
return
dto
;
}
}
}
src/main/java/com/neotel/smfcore/core/equipment/
bean
/EquipStatusDto.java
→
src/main/java/com/neotel/smfcore/core/equipment/
rest/dto
/EquipStatusDto.java
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
bean
;
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
rest
.
dto
;
import
com.neotel.smfcore.core.equipment.enums.EquipmentType
;
import
com.neotel.smfcore.core.equipment.enums.EquipmentType
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
src/main/java/com/neotel/smfcore/core/equipment/rest/dto/NsViewDto.java
0 → 100644
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
rest
.
dto
;
import
com.neotel.smfcore.core.equipment.bean.EquipMsg
;
import
com.neotel.smfcore.core.equipment.bean.ns.NsMesInfo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Data
public
class
NsViewDto
implements
Serializable
{
@ApiModelProperty
(
"名称"
)
private
String
name
;
@ApiModelProperty
(
"CID"
)
private
String
cid
;
@ApiModelProperty
(
"设备状态,0=离线,1=正常运行中, 2=急停"
)
private
int
status
=
0
;
@ApiModelProperty
(
"文字显示"
)
private
String
msg
=
""
;
@ApiModelProperty
(
"Mes信息"
)
private
NsMesInfo
mesInfo
=
null
;
@ApiModelProperty
(
"仅显示的日志消息集合"
)
private
List
<
EquipMsg
>
showLogs
=
new
ArrayList
<>();
/**
* 发上来的数据
*
* NS200定义:
* key=tPCount,value=今天已打印数量
* key=tNGCount,value=今天NG数量
* key=MES,value=MES最后一次对接信息:格式参考NsMesInfo
*/
private
Map
<
String
,
Object
>
data
=
new
HashMap
<>();
}
src/main/java/com/neotel/smfcore/core/
device
/util/EquipmentCache.java
→
src/main/java/com/neotel/smfcore/core/
equipment
/util/EquipmentCache.java
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
core
.
device
.
util
;
package
com
.
neotel
.
smfcore
.
core
.
equipment
.
util
;
import
com.google.common.base.Strings
;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
...
...
src/main/java/com/neotel/smfcore/core/message/util/DeviceMessageUtil.java
查看文件 @
839f0fb
...
@@ -3,7 +3,7 @@ package com.neotel.smfcore.core.message.util;
...
@@ -3,7 +3,7 @@ package com.neotel.smfcore.core.message.util;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.
device
.util.EquipmentCache
;
import
com.neotel.smfcore.core.
equipment
.util.EquipmentCache
;
import
com.neotel.smfcore.core.equipment.service.po.Equipment
;
import
com.neotel.smfcore.core.equipment.service.po.Equipment
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.message.enums.MessageType
;
import
com.neotel.smfcore.core.message.enums.MessageType
;
...
@@ -14,8 +14,6 @@ import com.neotel.smfcore.core.message.util.bean.DeviceInfo;
...
@@ -14,8 +14,6 @@ import com.neotel.smfcore.core.message.util.bean.DeviceInfo;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort
;
...
...
src/main/java/com/neotel/smfcore/core/solder/rest/SpBoxController.java
查看文件 @
839f0fb
...
@@ -262,6 +262,9 @@ public class SpBoxController {
...
@@ -262,6 +262,9 @@ public class SpBoxController {
public
List
<
SpTaskDto
>
filterTask
(
TaskQueryCondition
criteria
,
HttpServletRequest
request
)
{
public
List
<
SpTaskDto
>
filterTask
(
TaskQueryCondition
criteria
,
HttpServletRequest
request
)
{
String
storageId
=
criteria
.
getStorageId
();
String
storageId
=
criteria
.
getStorageId
();
if
(
ObjectUtil
.
isEmpty
(
storageId
)){
return
new
ArrayList
<>();
}
Storage
storage
=
dataCache
.
getStorageById
(
storageId
);
Storage
storage
=
dataCache
.
getStorageById
(
storageId
);
if
(!
storage
.
isSolderPaste
())
{
if
(!
storage
.
isSolderPaste
())
{
return
new
ArrayList
<>();
return
new
ArrayList
<>();
...
...
src/main/java/com/neotel/smfcore/core/system/util/EquipStatusUtil.java
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
core
.
system
.
util
;
package
com
.
neotel
.
smfcore
.
core
.
system
.
util
;
import
cn.hutool.core.date.DateTime
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.core.equipment.bean.EquipStatusBean
;
import
com.neotel.smfcore.core.equipment.bean.EquipStatusBean
;
import
com.neotel.smfcore.core.equipment.bean.ns.NsMesInfo
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -18,9 +20,9 @@ public class EquipStatusUtil {
...
@@ -18,9 +20,9 @@ public class EquipStatusUtil {
protected
static
Map
<
String
,
EquipStatusBean
>
statusMap
=
Maps
.
newConcurrentMap
();
protected
static
Map
<
String
,
EquipStatusBean
>
statusMap
=
Maps
.
newConcurrentMap
();
/**
/**
*
CID的设备故障消息(key 为 cid
)
*
NS设备最后一次MES通信信息(key 为 cid,value是最后一次MesInfo
)
*/
*/
private
static
Map
<
String
,
EquipStatusBean
>
clientMsgs
=
Maps
.
newConcurrentMap
();
private
static
Map
<
String
,
NsMesInfo
>
NsMesInfoMap
=
Maps
.
newConcurrentMap
();
/**
/**
...
@@ -38,6 +40,22 @@ public class EquipStatusUtil {
...
@@ -38,6 +40,22 @@ public class EquipStatusUtil {
statusMap
.
put
(
statusBean
.
getCid
(),
statusBean
);
statusMap
.
put
(
statusBean
.
getCid
(),
statusBean
);
}
}
public
static
void
updateNsMesInfo
(
String
cid
,
NsMesInfo
nsMesInfo
)
{
if
(
nsMesInfo
==
null
){
return
;
}
if
(
nsMesInfo
.
getTime
()==
null
){
nsMesInfo
.
setTime
(
DateTime
.
now
());
}
NsMesInfoMap
.
put
(
cid
,
nsMesInfo
);
}
public
static
NsMesInfo
getNsMesInfo
(
String
cid
){
NsMesInfo
mesInfo
=
NsMesInfoMap
.
get
(
cid
);
return
mesInfo
;
}
/**
/**
* 获取所有的设备信息
* 获取所有的设备信息
* @return
* @return
...
...
src/main/java/com/neotel/smfcore/custom/duo/DuoController.java
0 → 100644
查看文件 @
839f0fb
package
com
.
neotel
.
smfcore
.
custom
.
duo
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.core.device.bean.BoxStatusBean
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.storage.bean.UsageItem
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.util.StringUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.*
;
@Slf4j
@RestController
@RequestMapping
(
"/rest/api"
)
public
class
DuoController
{
@Autowired
private
DataCache
dataCache
;
@ApiOperation
(
"S001 MES或AGV系统获取料仓状态信息"
)
@RequestMapping
(
"/boxDoorInfo"
)
@AnonymousAccess
public
ResultBean
boxDoorInfo
(
@RequestBody
Map
<
String
,
Object
>
paramMap
)
{
Collection
<
Storage
>
storageList
=
Lists
.
newArrayList
();
storageList
.
addAll
(
dataCache
.
getAllStorage
().
values
());
List
<
Map
<
String
,
Object
>>
results
=
Lists
.
newArrayList
();
for
(
Storage
storage
:
storageList
)
{
StatusBean
statusBean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
if
(
statusBean
==
null
)
{
statusBean
=
new
StatusBean
();
}
Map
<
String
,
BoxStatusBean
>
boxStatusMap
=
statusBean
.
getBoxStatus
();
int
status
=
-
1
;
String
shelfS
=
statusBean
.
getData
().
getOrDefault
(
"shelfState"
,
"OFFLINE"
);
if
(
boxStatusMap
!=
null
)
{
BoxStatusBean
boxStatusBean
=
boxStatusMap
.
get
(
"1"
);
if
(
boxStatusBean
!=
null
)
{
status
=
boxStatusBean
.
getStatus
();
}
}
int
storageStatus
=
status
;
if
(
status
==
StorageConstants
.
STATUS
.
OFFLINE
||
statusBean
.
timeOut
())
{
//离线
storageStatus
=
-
1
;
shelfS
=
"OFFLINE"
;
}
String
msg
=
statusBean
.
getMsg
();
String
msgType
=
statusBean
.
getDeviceType
();
Map
<
String
,
Object
>
itemMap
=
new
HashMap
<>();
itemMap
.
put
(
"cid"
,
storage
.
getCid
());
Map
<
String
,
UsageItem
>
usageMap
=
storage
.
getUsageMap
();
List
<
String
>
reelSize
=
new
ArrayList
<>();
for
(
UsageItem
usageItem
:
usageMap
.
values
())
{
String
sizeStr
=
usageItem
.
getSizeStr
();
reelSize
.
add
(
sizeStr
);
}
String
s
=
StringUtil
.
join
(
reelSize
.
toArray
(),
","
);
itemMap
.
put
(
"reelSize"
,
s
);
itemMap
.
put
(
"status"
,
shelfS
);
//查找料仓正在出库中的任务
itemMap
.
put
(
"hSerial"
,
""
);
results
.
add
(
itemMap
);
}
return
ResultBean
.
newOkResult
(
results
);
}
@ApiOperation
(
"S002 MES或AGV系统操作料仓门打开或关闭"
)
@RequestMapping
(
"/boxDoorOp"
)
@AnonymousAccess
public
ResultBean
boxDoorOp
(
@RequestBody
Map
<
String
,
Object
>
paramList
)
{
// 请求参数参数名参数描述类型是否必填备注
// cid料仓编号String是
// op操作String是OPEN=开门,CLOSE=关门
// 参数示例{"cid":"001","op":"OPEN"}
// 返回结果参数名参数描述类型是否必填备注
// code状态码。Integer是0为正常。其他为异常。
// msg提示消息String是
// data
//
// 返回示例{ "code": 0, "msg": "ok", "data": ""}
log
.
info
(
"{}收到数据为:{}"
,
"boxDoorOp"
,
JsonUtil
.
toJsonStr
(
paramList
));
String
cid
=
paramList
.
get
(
"cid"
).
toString
();
String
op
=
paramList
.
get
(
"op"
).
toString
();
StatusBean
statusBean
=
DevicesStatusUtil
.
getStatusBean
(
cid
);
if
(
statusBean
==
null
||
statusBean
.
timeOut
())
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.duo.offline"
,
"设备{0}离线"
,
new
String
[]{
cid
});
}
// closeLock 为enable时此按钮状态为可用,openLock 为enable时,此按钮状态为可用已读
// 客户端收到服务器openLock为doit时,执行打开门锁动作,closeLock为doit时,执行关闭门锁
String
opKey
=
""
;
if
(
op
.
equals
(
"OPEN"
))
{
opKey
=
"openLock"
;
}
if
(
op
.
equals
(
"CLOSE"
))
{
opKey
=
"closeLock"
;
}
if
(
ObjectUtil
.
isNotEmpty
(
opKey
))
{
String
openLock
=
statusBean
.
getData
().
getOrDefault
(
opKey
,
""
);
if
(
openLock
.
equals
(
"enable"
))
{
String
opValue
=
"doit"
;
log
.
info
(
"boxDoorOp:cid="
+
cid
+
","
+
opKey
+
"="
+
opValue
);
DevicesStatusUtil
.
addOp
(
cid
,
opKey
,
opValue
);
return
ResultBean
.
newOkResult
(
"smfcore.msg.ok"
,
"操作成功"
);
}
}
return
ResultBean
.
newErrorResult
(
2
,
"smfcore.msg.op.fail"
,
"操作失败"
);
}
}
src/main/resources/messages.properties
查看文件 @
839f0fb
...
@@ -380,4 +380,7 @@ smfcore.agv.dispatch=\u8D27\u7269\u5DF2\u7ECF\u53D1\u9001\u5230\u5B58\u50A8\u7CF
...
@@ -380,4 +380,7 @@ smfcore.agv.dispatch=\u8D27\u7269\u5DF2\u7ECF\u53D1\u9001\u5230\u5B58\u50A8\u7CF
smfcore.agv.awaitingInstruction
=
\u
7B49
\u
5F85
\u6307\u
793A
smfcore.agv.awaitingInstruction
=
\u
7B49
\u
5F85
\u6307\u
793A
smfcore.agv.operation
=
AGV
\u5728\u
8FD0
\u
884C
\u
4E2D
smfcore.agv.operation
=
AGV
\u5728\u
8FD0
\u
884C
\u
4E2D
smfcore.boxmimokanban
=
\u
4E91
\u6599\u
4ED3
\u
770B
\u
677F
smfcore.boxmimokanban
=
\u
4E91
\u6599\u
4ED3
\u
770B
\u
677F
smfcore.neoai
=
Neo Ai
\ No newline at end of file
\ No newline at end of file
smfcore.neoai
=
Neo Ai
smfcore.duo.offline
=
\u
8BBE
\u5907
{0}
\u
79BB
\u
7EBF
smfcore.msg.op.fail
=
\u
64CD
\u
4F5C
\u5931\u
8D25
smfcore.equip.notExist
=
\u
8BBE
\u5907\u
4E0D
\u
5B58
\u5728
\ No newline at end of file
\ No newline at end of file
src/main/resources/messages_en_US.properties
查看文件 @
839f0fb
...
@@ -371,4 +371,7 @@ smfcore.agv.dispatch=Goods dispatched to storage system
...
@@ -371,4 +371,7 @@ smfcore.agv.dispatch=Goods dispatched to storage system
smfcore.agv.awaitingInstruction
=
Awaiting instruction
smfcore.agv.awaitingInstruction
=
Awaiting instruction
smfcore.agv.operation
=
AGV is in operation
smfcore.agv.operation
=
AGV is in operation
smfcore.boxmimokanban
=
SMD BOX KANBAN
smfcore.boxmimokanban
=
SMD BOX KANBAN
smfcore.neoai
=
Neo Ai
\ No newline at end of file
\ No newline at end of file
smfcore.neoai
=
Neo Ai
smfcore.duo.offline
=
Equipment {0} offline
smfcore.msg.op.fail
=
failure of an operation
smfcore.equip.notExist
=
Device does not exist
\ No newline at end of file
\ No newline at end of file
src/main/resources/messages_ja_JP.properties
查看文件 @
839f0fb
...
@@ -367,4 +367,7 @@ smfcore.agv.awaitingInstruction=\u6307\u793A\u5F85\u3061
...
@@ -367,4 +367,7 @@ smfcore.agv.awaitingInstruction=\u6307\u793A\u5F85\u3061
smfcore.agv.operation
=
AGV
\u
52D5
\u
4F5C
\u
4E2D
\u3067\u3059
smfcore.agv.operation
=
AGV
\u
52D5
\u
4F5C
\u
4E2D
\u3067\u3059
smfcore.boxmimokanban
=
\u
30AF
\u
30E9
\u
30A6
\u
30C9
\u5009\u
5EAB
\u
30AB
\u
30F3
\u
30D0
\u
30F3
smfcore.boxmimokanban
=
\u
30AF
\u
30E9
\u
30A6
\u
30C9
\u5009\u
5EAB
\u
30AB
\u
30F3
\u
30D0
\u
30F3
smfcore.neoai
=
Neo Ai
\ No newline at end of file
\ No newline at end of file
smfcore.neoai
=
Neo Ai
smfcore.duo.offline
=
\u
8BBE
\u5907
{0}
\u
79BB
\u
7EBF
smfcore.msg.op.fail
=
\u
64CD
\u
4F5C
\u5931\u
8D25
smfcore.equip.notExist
=
\u
8BBE
\u5907\u
4E0D
\u
5B58
\u5728
\ No newline at end of file
\ No newline at end of file
src/main/resources/messages_zh_CN.properties
查看文件 @
839f0fb
...
@@ -367,4 +367,7 @@ smfcore.agv.awaitingInstruction=\u7B49\u5F85\u6307\u793A
...
@@ -367,4 +367,7 @@ smfcore.agv.awaitingInstruction=\u7B49\u5F85\u6307\u793A
smfcore.agv.operation
=
AGV
\u5728\u
8FD0
\u
884C
\u
4E2D
smfcore.agv.operation
=
AGV
\u5728\u
8FD0
\u
884C
\u
4E2D
smfcore.boxmimokanban
=
\u
4E91
\u6599\u
4ED3
\u
770B
\u
677F
smfcore.boxmimokanban
=
\u
4E91
\u6599\u
4ED3
\u
770B
\u
677F
smfcore.neoai
=
Neo Ai
\ No newline at end of file
\ No newline at end of file
smfcore.neoai
=
Neo Ai
smfcore.duo.offline
=
\u
8BBE
\u5907
{0}
\u
79BB
\u
7EBF
smfcore.msg.op.fail
=
\u
64CD
\u
4F5C
\u5931\u
8D25
smfcore.equip.notExist
=
\u
8BBE
\u5907\u
4E0D
\u
5B58
\u5728
\ No newline at end of file
\ No newline at end of file
src/main/resources/messages_zh_TW.properties
查看文件 @
839f0fb
...
@@ -367,4 +367,7 @@ smfcore.agv.awaitingInstruction=\u7B49\u5F85\u6307\u793A
...
@@ -367,4 +367,7 @@ smfcore.agv.awaitingInstruction=\u7B49\u5F85\u6307\u793A
smfcore.agv.operation
=
AGV
\u
6B63
\u5728\u
904B
\u
884C
smfcore.agv.operation
=
AGV
\u
6B63
\u5728\u
904B
\u
884C
smfcore.boxmimokanban
=
\u
96F2
\u6599\u5009\u
770B
\u
677F
smfcore.boxmimokanban
=
\u
96F2
\u6599\u5009\u
770B
\u
677F
smfcore.neoai
=
Neo Ai
\ No newline at end of file
\ No newline at end of file
smfcore.neoai
=
Neo Ai
smfcore.duo.offline
=
\u
8A2D
\u5099
{0}
\u
96E2
\u
7DDA
smfcore.msg.op.fail
=
\u
64CD
\u
4F5C
\u5931\u6557
smfcore.equip.notExist
=
\u
8A2D
\u5099\u
4E0D
\u
5B58
\u5728
\ No newline at end of file
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论