Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit b3e54ce0
由
sunke
编写于
2022-09-26 17:01:39 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
完善Neotel接口
1 个父辈
e949681c
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
470 行增加
和
15 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/custom/neotel/NeotelApi.java
src/main/java/com/neotel/smfcore/custom/neotel/NeotelController.java
src/main/resources/config/application.yml
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
查看文件 @
b3e54ce
...
@@ -110,7 +110,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -110,7 +110,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
return
putIn
(
loginUser
,
groupId
,
storageId
,
barcodeSave
,
token
);
return
putIn
(
loginUser
,
groupId
,
storageId
,
barcodeSave
,
token
);
}
}
pr
ivate
ResultBean
putIn
(
String
loginUser
,
String
groupId
,
String
storageId
,
Barcode
barcode
,
String
token
)
{
pr
otected
ResultBean
putIn
(
String
loginUser
,
String
groupId
,
String
storageId
,
Barcode
barcode
,
String
token
)
{
// CodeBean codeBean = codeResolve.resolveSingleCode(codeStr);
// CodeBean codeBean = codeResolve.resolveSingleCode(codeStr);
if
(
barcode
==
null
||
barcode
.
getBarcode
()
==
null
)
{
if
(
barcode
==
null
||
barcode
.
getBarcode
()
==
null
)
{
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
b3e54ce
...
@@ -224,6 +224,19 @@ public class LiteOrderCache {
...
@@ -224,6 +224,19 @@ public class LiteOrderCache {
smfApi
.
onOrderStatusChange
(
liteOrder
);
smfApi
.
onOrderStatusChange
(
liteOrder
);
}
}
private
LiteOrder
getLiteOrder
(
String
orderNo
){
LiteOrder
order
=
liteOrderMap
.
get
(
orderNo
);
if
(
order
==
null
)
{
log
.
info
(
"缓存中未找到["
+
orderNo
+
"],从数据库中重新加载"
);
order
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
order
!=
null
){
List
<
LiteOrderItem
>
items
=
liteOrderItemManager
.
findOrderItems
(
order
.
getId
());
order
.
setOrderItems
(
items
);
}
}
return
order
;
}
/**
/**
* 更新工单状态信息
* 更新工单状态信息
*/
*/
...
@@ -233,15 +246,7 @@ public class LiteOrderCache {
...
@@ -233,15 +246,7 @@ public class LiteOrderCache {
//更新工单状态
//更新工单状态
String
orderNo
=
task
.
getSourceName
();
String
orderNo
=
task
.
getSourceName
();
if
(!
Strings
.
isNullOrEmpty
(
orderNo
))
{
if
(!
Strings
.
isNullOrEmpty
(
orderNo
))
{
LiteOrder
order
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
order
=
getLiteOrder
(
orderNo
);
if
(
order
==
null
)
{
log
.
info
(
"缓存中未找到["
+
orderNo
+
"],从数据库中重新加载"
);
order
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
order
!=
null
){
List
<
LiteOrderItem
>
items
=
liteOrderItemManager
.
findOrderItems
(
order
.
getId
());
order
.
setOrderItems
(
items
);
}
}
if
(
order
!=
null
)
{
if
(
order
!=
null
)
{
//任务是取消的,需要将总待出库数量-1
//任务是取消的,需要将总待出库数量-1
if
(
task
.
isCancel
())
{
if
(
task
.
isCancel
())
{
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/IStoragePosManager.java
查看文件 @
b3e54ce
...
@@ -66,4 +66,6 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
...
@@ -66,4 +66,6 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
List
<
StoragePos
>
findPosList
(
String
storageId
,
List
<
String
>
posNames
);
List
<
StoragePos
>
findPosList
(
String
storageId
,
List
<
String
>
posNames
);
List
<
StoragePos
>
getSameSizeContinuityEmptyPosList
(
Storage
storage
,
Barcode
barcode
)
throws
ValidateException
;
List
<
StoragePos
>
getSameSizeContinuityEmptyPosList
(
Storage
storage
,
Barcode
barcode
)
throws
ValidateException
;
List
<
StoragePos
>
findByBarcodesAndPartNums
(
List
<
String
>
storageIds
,
List
<
String
>
partNums
,
List
<
String
>
reelIds
);
}
}
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
b3e54ce
...
@@ -580,4 +580,22 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -580,4 +580,22 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return
prefixStr
+
String
.
format
(
"%0"
+
posIndexStr
.
length
()+
"d"
,
nextPosIndex
);
return
prefixStr
+
String
.
format
(
"%0"
+
posIndexStr
.
length
()+
"d"
,
nextPosIndex
);
}
}
@Override
public
List
<
StoragePos
>
findByBarcodesAndPartNums
(
List
<
String
>
storageIds
,
List
<
String
>
partNums
,
List
<
String
>
reelIds
)
{
//构造查询条件
Query
query
=
new
Query
();
Criteria
criteria
=
Criteria
.
where
(
"barcode"
).
exists
(
true
);
if
(
storageIds
!=
null
&&
storageIds
.
isEmpty
()){
criteria
.
and
(
"storageId"
).
in
(
storageIds
);
}
if
(
reelIds
!=
null
&&
!
reelIds
.
isEmpty
()){
criteria
.
and
(
"barcode.barcode"
).
in
(
reelIds
);
}
if
(
partNums
!=
null
&&
!
partNums
.
isEmpty
()){
criteria
.
and
(
"barcode.partNumber"
).
in
(
partNums
);
}
query
.
addCriteria
(
criteria
);
return
storagePosDao
.
findByQuery
(
query
);
}
}
}
src/main/java/com/neotel/smfcore/custom/neotel/NeotelApi.java
0 → 100644
查看文件 @
b3e54ce
package
com
.
neotel
.
smfcore
.
custom
.
neotel
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.core.api.bean.ApiResult
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
import
com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.text.ParseException
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
@Service
@Slf4j
public
class
NeotelApi
extends
BaseSmfApiListener
{
@Autowired
private
ILiteOrderItemManager
liteOrderItemManager
;
@Override
public
boolean
isForThisApi
(
String
apiName
)
{
return
apiName
!=
null
&&
apiName
.
equalsIgnoreCase
(
"neotel"
);
}
@Override
public
void
inTaskStatusChange
(
String
inNotifyUrl
,
DataLog
task
)
{
String
requestParams
=
""
;
String
responseInfo
=
""
;
if
(
task
.
isFinished
())
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"reelId"
,
task
.
getBarcode
());
paramMap
.
put
(
"location"
,
task
.
getPosName
());
paramMap
.
put
(
"source"
,
"SMF"
);
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
task
.
getBarcode
());
String
fullCode
=
""
;
if
(
barcode
!=
null
)
{
fullCode
=
barcode
.
getFullCode
();
}
paramMap
.
put
(
"fullCode"
,
fullCode
);
try
{
requestParams
=
JsonUtil
.
toJsonStr
(
paramMap
);
log
.
info
(
task
.
getBarcode
()
+
"入库通知,参数"
+
requestParams
);
responseInfo
=
HttpHelper
.
postJson
(
inNotifyUrl
,
paramMap
);
log
.
info
(
task
.
getBarcode
()
+
"入库通知返回"
+
responseInfo
);
ApiResult
apiResult
=
JsonUtil
.
toObj
(
responseInfo
,
ApiResult
.
class
);
}
catch
(
Exception
e
)
{
log
.
error
(
"入库通知接口出错:"
+
e
.
getMessage
());
}
}
}
@Override
public
void
outTaskStatusChange
(
String
outNotifyUrl
,
DataLog
task
)
{
String
requestParams
=
""
;
String
responseInfo
=
""
;
if
(
task
.
isFinished
())
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"reelId"
,
task
.
getBarcode
());
paramMap
.
put
(
"partNum"
,
task
.
getPartNumber
());
paramMap
.
put
(
"qty"
,
task
.
getNum
()
+
""
);
paramMap
.
put
(
"boxNo"
,
task
.
getCid
());
paramMap
.
put
(
"location"
,
task
.
getPosName
());
String
hSerial
=
""
;
String
so
=
""
;
String
slotNum
=
""
;
String
feederInfo
=
""
;
String
sourceId
=
task
.
getSourceId
();
if
(
Strings
.
isNotBlank
(
sourceId
)){
LiteOrder
liteOrder
=
liteOrderManager
.
get
(
task
.
getSourceId
());
if
(
liteOrder
!=
null
){
hSerial
=
liteOrder
.
getOrderNo
();
so
=
liteOrder
.
getSo
();
}
String
subSourceId
=
task
.
getSubSourceId
();
LiteOrderItem
orderItem
=
liteOrderItemManager
.
get
(
subSourceId
);
if
(
orderItem
!=
null
){
slotNum
=
orderItem
.
getSlotNum
()
+
""
;
feederInfo
=
orderItem
.
getFeederInfo
();
}
}
paramMap
.
put
(
"hSerial"
,
hSerial
);
paramMap
.
put
(
"so"
,
so
);
paramMap
.
put
(
"slotNum"
,
slotNum
);
paramMap
.
put
(
"feederInfo"
,
feederInfo
);
try
{
requestParams
=
JsonUtil
.
toJsonStr
(
paramMap
);
log
.
info
(
task
.
getBarcode
()
+
"出库通知,参数"
+
requestParams
);
responseInfo
=
HttpHelper
.
postJson
(
outNotifyUrl
,
paramMap
);
log
.
info
(
task
.
getBarcode
()
+
"出库通知返回"
+
responseInfo
);
ApiResult
apiResult
=
JsonUtil
.
toObj
(
responseInfo
,
ApiResult
.
class
);
}
catch
(
Exception
e
)
{
log
.
error
(
"出库通知接口出错:"
+
e
.
getMessage
());
}
}
}
private
String
getData
(
Map
<
String
,
Object
>
dataMap
,
String
dataKey
)
{
Object
data
=
dataMap
.
get
(
dataKey
);
if
(
data
==
null
)
{
return
""
;
}
else
{
return
data
.
toString
();
}
}
/**
* 入库判定
*
* @param inCheckUrl
* @param barcode
* @return
* @throws ValidateException
*/
@Override
public
Barcode
canPutIn
(
String
inCheckUrl
,
Barcode
barcode
)
throws
ValidateException
{
log
.
info
(
"{}类型为:{}"
,
barcode
.
getBarcode
(),
barcode
.
getType
());
if
(
COMPONENT_TYPE
.
COMPONENT
!=
barcode
.
getType
())
{
return
null
;
}
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"reelId"
,
barcode
.
getBarcode
());
paramMap
.
put
(
"fullCode"
,
barcode
.
getFullCode
());
try
{
log
.
info
(
barcode
.
getBarcode
()
+
"入库验证,参数"
+
JsonUtil
.
toJsonStr
(
paramMap
));
String
result
=
HttpHelper
.
postJson
(
inCheckUrl
,
paramMap
);
log
.
info
(
barcode
.
getBarcode
()
+
"入库验证返回"
+
result
);
ApiResult
apiResult
=
JsonUtil
.
toObj
(
result
,
ApiResult
.
class
);
if
(
apiResult
.
getCode
()
==
0
)
{
Map
<
String
,
Object
>
dataMap
=
(
Map
<
String
,
Object
>)
apiResult
.
getData
();
String
partNum
=
getData
(
dataMap
,
"partNum"
);
if
(
Strings
.
isNotBlank
(
partNum
))
{
barcode
.
setPartNumber
(
partNum
);
}
String
vendor
=
getData
(
dataMap
,
"vendor"
);
if
(
Strings
.
isNotBlank
(
vendor
))
{
barcode
.
setProvider
(
vendor
);
}
String
qtyStr
=
getData
(
dataMap
,
"qty"
);
if
(
Strings
.
isNotBlank
(
qtyStr
))
{
int
qty
=
Integer
.
valueOf
(
qtyStr
);
if
(
qty
>
0
)
{
barcode
.
setAmount
(
qty
);
}
}
String
batch
=
getData
(
dataMap
,
"batch"
);
if
(
Strings
.
isNotBlank
(
batch
))
{
barcode
.
setBatch
(
batch
);
}
try
{
String
produceDateStr
=
getData
(
dataMap
,
"produceDate"
);
if
(
Strings
.
isNotBlank
(
produceDateStr
))
{
Date
produceDate
=
DateUtil
.
toDate
(
produceDateStr
,
"yyyy-MM-dd HH:mm:ss"
);
barcode
.
setProduceDate
(
produceDate
);
}
}
catch
(
ParseException
e
)
{
log
.
error
(
"日期转换出错"
,
e
);
}
barcode
=
barcodeManager
.
saveBarcode
(
barcode
);
return
barcode
;
}
else
{
return
null
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"入库验证接口出错:"
+
e
.
getMessage
());
throw
new
ValidateException
(
"smfcore.mesApi.inCheck.error"
,
"MES验证出错:"
+
e
.
getMessage
());
}
}
/**
* 需求单状态通知
*
* @param orderNotifyUrl
* @param liteOrder
*/
@Override
public
void
onOrderStatusChange
(
String
orderNotifyUrl
,
LiteOrder
liteOrder
)
{
}
@Override
public
LiteOrder
fetchOrder
(
String
fetchOrderUrl
,
String
orderNumber
,
String
username
)
{
return
null
;
}
}
src/main/java/com/neotel/smfcore/custom/neotel/NeotelController.java
0 → 100644
查看文件 @
b3e54ce
package
com
.
neotel
.
smfcore
.
custom
.
neotel
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
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.barcode.service.po.Barcode
;
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.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.bean.UsageItem
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.security.annotation.AnonymousPostMapping
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
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
NeotelController
{
@Autowired
protected
ILiteOrderManager
liteOrderManager
;
@Autowired
protected
LiteOrderCache
liteOrderCache
;
@Autowired
private
DataCache
dataCache
;
@Autowired
private
IStoragePosManager
storagePosManager
;
@ApiOperation
(
"6.1创建需求单"
)
@AnonymousPostMapping
(
"/outInfo"
)
public
ResultBean
outInfo
(
@RequestBody
List
<
Map
<
String
,
Object
>>
paramList
)
{
log
.
info
(
"{}收到数据为:{}"
,
"创建需求单outInfo"
,
JsonUtil
.
toJsonStr
(
paramList
));
if
(!
paramList
.
isEmpty
())
{
for
(
Map
<
String
,
Object
>
paramMap
:
paramList
)
{
if
(
paramMap
.
get
(
"hSerial"
)
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"hSerial"
});
}
if
(
paramMap
.
get
(
"outItems"
)
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"outItems"
});
}
String
orderNo
=
paramMap
.
get
(
"hSerial"
).
toString
();
//需求单号
String
line
=
paramMap
.
get
(
"line"
)
==
null
?
""
:
paramMap
.
get
(
"line"
).
toString
();
//线别
String
so
=
paramMap
.
get
(
"so"
)
==
null
?
""
:
paramMap
.
get
(
"so"
).
toString
();
//工单号
//需求单详情数据
List
<
LiteOrderItem
>
orderItemList
=
new
ArrayList
<>();
List
<
Map
>
outItemList
=
JsonUtil
.
toList
(
paramMap
.
get
(
"outItems"
).
toString
(),
Map
.
class
);
if
(!
outItemList
.
isEmpty
())
{
for
(
Map
outItem
:
outItemList
)
{
LiteOrderItem
orderItem
=
new
LiteOrderItem
();
if
(
outItem
.
get
(
"slotNum"
)
!=
null
)
{
orderItem
.
setSlotNum
(
Integer
.
valueOf
(
outItem
.
get
(
"slotNum"
).
toString
()));
//站位编号
}
if
(
outItem
.
get
(
"reelId"
)
!=
null
)
{
String
reelId
=
outItem
.
get
(
"reelId"
).
toString
();
orderItem
.
setRi
(
reelId
);
//料盘唯一码
orderItem
.
setNeedNum
(
1
);
}
orderItemList
.
add
(
orderItem
);
}
}
//开始保存数据
LiteOrder
liteOrder
=
new
LiteOrder
();
liteOrder
.
setOrderNo
(
orderNo
);
liteOrder
.
setLine
(
line
);
liteOrder
.
setSo
(
so
);
liteOrder
.
setType
(
2
);
liteOrder
.
setOrderItems
(
orderItemList
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
}
return
ResultBean
.
newOkResult
(
""
);
}
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"需求单信息不能为空"
);
}
@ApiOperation
(
"6.2关闭需求单"
)
@AnonymousPostMapping
(
"/closeOutInfo"
)
public
ResultBean
closeOutInfo
(
@RequestBody
Map
<
String
,
String
>
paramMap
)
{
String
orderNo
=
paramMap
.
get
(
"hSerial"
);
//需求工单
if
(
ObjectUtils
.
isEmpty
(
orderNo
))
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"hSerial"
});
}
String
result
=
liteOrderCache
.
closeOrder
(
orderNo
);
if
(
"smfcore.order.close.success"
.
equals
(
result
))
{
return
ResultBean
.
newOkResult
(
""
);
}
else
{
return
ResultBean
.
newErrorResult
(
1
,
""
,
"关闭失败"
);
}
}
@ApiOperation
(
"6.3 获取实时库存"
)
@AnonymousPostMapping
(
"/inventory"
)
public
ResultBean
inventory
(
@RequestBody
Map
<
String
,
List
<
String
>>
paramMap
)
{
List
<
String
>
partNums
=
paramMap
.
get
(
"partNums"
);
List
<
String
>
reelIds
=
paramMap
.
get
(
"reelIds"
);
List
<
String
>
cids
=
paramMap
.
get
(
"towerIds"
);
List
<
String
>
storageIds
=
new
ArrayList
<>();
if
(
cids
!=
null
){
for
(
String
cid
:
cids
)
{
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
!=
null
){
storageIds
.
add
(
storage
.
getId
());
}
}
}
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByBarcodesAndPartNums
(
storageIds
,
partNums
,
reelIds
);
if
(
storagePosList
!=
null
)
{
List
<
Map
<
String
,
Object
>>
resultMapList
=
new
ArrayList
<>();
for
(
StoragePos
storagePos
:
storagePosList
)
{
Barcode
barcode
=
storagePos
.
getBarcode
();
if
(
barcode
!=
null
)
{
if
(
barcode
.
getSubCodeList
()
!=
null
&&
!
barcode
.
getSubCodeList
().
isEmpty
())
{
for
(
Barcode
subBarcode
:
barcode
.
getSubCodeList
())
{
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
resultMap
.
put
(
"reelId"
,
subBarcode
.
getBarcode
());
resultMap
.
put
(
"qty"
,
subBarcode
.
getAmount
());
resultMap
.
put
(
"towerId"
,
storagePos
.
getStorageId
());
resultMap
.
put
(
"location"
,
storagePos
.
getPosName
());
resultMap
.
put
(
"partNum"
,
subBarcode
.
getPartNumber
());
resultMapList
.
add
(
resultMap
);
}
}
else
{
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
resultMap
.
put
(
"reelId"
,
barcode
.
getBarcode
());
resultMap
.
put
(
"qty"
,
barcode
.
getAmount
());
resultMap
.
put
(
"towerId"
,
storagePos
.
getStorageId
());
resultMap
.
put
(
"location"
,
storagePos
.
getPosName
());
resultMap
.
put
(
"partNum"
,
barcode
.
getPartNumber
());
resultMapList
.
add
(
resultMap
);
}
}
}
return
ResultBean
.
newOkResult
(
resultMapList
);
}
return
ResultBean
.
newErrorResult
(
1
,
""
,
"未找到实时库存信息"
);
}
@ApiOperation
(
"6.4 设备状态获取"
)
@AnonymousPostMapping
(
"/deviceStatus"
)
public
ResultBean
deviceStatus
(
@RequestBody
Map
<
String
,
Object
>
paramMap
)
{
Collection
<
Storage
>
storageList
=
Lists
.
newArrayList
();
List
<
String
>
deviceKeyList
=
paramMap
.
get
(
"deviceKeyList"
)
==
null
?
null
:
JsonUtil
.
toList
(
paramMap
.
get
(
"deviceKeyList"
).
toString
(),
String
.
class
);
//如果没有的话 就查询所有的
if
(
deviceKeyList
==
null
||
deviceKeyList
.
size
()
<
1
)
{
storageList
.
addAll
(
dataCache
.
getAllStorage
().
values
());
}
else
{
for
(
String
cid
:
deviceKeyList
)
{
Storage
storage
=
dataCache
.
getStorage
(
cid
);
storageList
.
add
(
storage
);
}
}
List
<
Map
<
String
,
Object
>>
results
=
Lists
.
newArrayList
();
for
(
Storage
storage
:
storageList
)
{
StatusBean
statusBean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
Map
<
String
,
BoxStatusBean
>
boxStatusMap
=
statusBean
.
getBoxStatus
();
int
status
=
-
1
;
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
;
}
String
msg
=
statusBean
.
getMsg
();
String
msgType
=
statusBean
.
getDeviceType
();
Map
<
String
,
Object
>
itemMap
=
new
HashMap
<>();
itemMap
.
put
(
"deviceKey"
,
storage
.
getType
()
+
"."
+
storage
.
getCid
());
itemMap
.
put
(
"name"
,
storage
.
getName
());
itemMap
.
put
(
"status"
,
storageStatus
);
itemMap
.
put
(
"msg"
,
msg
);
itemMap
.
put
(
"msgType"
,
msgType
);
itemMap
.
put
(
"startTime"
,
storage
.
getCreateDate
());
itemMap
.
put
(
"updateTime"
,
storage
.
getUpdateDate
());
Map
<
String
,
Object
>
deviceDataMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
emptySlotMap
=
Maps
.
newHashMap
();
Map
<
String
,
Object
>
totalSlotMap
=
Maps
.
newHashMap
();
Map
<
String
,
UsageItem
>
usageMap
=
storage
.
getUsageMap
();
for
(
UsageItem
usageItem
:
usageMap
.
values
())
{
String
sizeStr
=
usageItem
.
getSizeStr
();
int
total
=
usageItem
.
getTotalCount
();
int
used
=
usageItem
.
getUsedCount
();
totalSlotMap
.
put
(
sizeStr
,
total
);
emptySlotMap
.
put
(
sizeStr
,
total
-
used
);
}
deviceDataMap
.
put
(
"towerId"
,
storage
.
getCid
());
deviceDataMap
.
put
(
"status"
,
statusBean
.
getStatus
());
deviceDataMap
.
put
(
"name"
,
storage
.
getName
());
deviceDataMap
.
put
(
"doorReelSignal"
,
statusBean
.
getDoorReelSingnal
());
deviceDataMap
.
put
(
"barcode"
,
statusBean
.
getData
().
get
(
"barcode"
));
deviceDataMap
.
put
(
"emptySlot"
,
emptySlotMap
);
deviceDataMap
.
put
(
"totalSlot"
,
totalSlotMap
);
itemMap
.
put
(
"deviceData"
,
deviceDataMap
);
results
.
add
(
itemMap
);
}
return
ResultBean
.
newOkResult
(
results
);
}
}
src/main/resources/config/application.yml
查看文件 @
b3e54ce
...
@@ -2,11 +2,11 @@ server:
...
@@ -2,11 +2,11 @@ server:
port
:
8800
port
:
8800
api
:
api
:
#name: Neotel
name
:
Hella
#inCheckUrl: DaLu
#outNotifyUrl: https://matlabel-tool.com:4434/SMD_BOXAPI/OutBox
#inNotifyUrl: https://matlabel-tool.com:4434/SMD_BOXAPI/InBox
hella
:
host
:
127.0.0.1
port
:
9999
# 文件存储路径
# 文件存储路径
file
:
file
:
...
@@ -41,6 +41,6 @@ app:
...
@@ -41,6 +41,6 @@ app:
type
:
"
"
type
:
"
"
menu
:
menu
:
show
:
show
:
orderSetting
hide
:
hide
:
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论