Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit a6ea5055
由
LN
编写于
2024-12-11 20:17:59 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
工单锁定取消物料需要将锁定状态上传到TMS. reelID出库修改。websocket连接后延几秒再同步数据。
1 个父辈
112657c3
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
185 行增加
和
105 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/HanwhaApiHandler.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSCommunicator.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSUtil.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/bean/TMSPartReelPos.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/bean/TMSPos.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
a6ea505
...
@@ -438,7 +438,7 @@ public class LiteOrderCache {
...
@@ -438,7 +438,7 @@ public class LiteOrderCache {
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
,
false
);
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
,
false
);
}
}
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
,
boolean
singleOut
,
boolean
needCheck
)
{
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
,
boolean
singleOut
,
boolean
needCheck
)
{
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
,
needCheck
);
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
,
needCheck
,
new
ArrayList
<>()
);
}
}
/**
/**
* 执行工单出库
* 执行工单出库
...
@@ -740,19 +740,26 @@ public class LiteOrderCache {
...
@@ -740,19 +740,26 @@ public class LiteOrderCache {
List
<
StoragePos
>
lockPosList
=
storagePosManager
.
findLockPos
(
liteOrder
.
getOrderNo
());
List
<
StoragePos
>
lockPosList
=
storagePosManager
.
findLockPos
(
liteOrder
.
getOrderNo
());
//绑定料需要解绑
storagePosManager
.
clearLockPos
(
liteOrder
.
getOrderNo
());
List
<
StoragePos
>
newPosLis
=
new
ArrayList
<>();
//缓存清除锁定 TODO
//缓存清除锁定 TODO
if
(
lockPosList
!=
null
)
{
if
(
lockPosList
!=
null
&&
lockPosList
.
size
()>
0
)
{
for
(
StoragePos
pos
:
for
(
StoragePos
pos
:
lockPosList
)
{
lockPosList
)
{
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
dataCache
.
unLockOneReel
(
storage
.
getCid
(),
pos
.
getBarcode
().
getPartNumber
());
dataCache
.
unLockOneReel
(
storage
.
getCid
(),
pos
.
getBarcode
().
getPartNumber
());
pos
.
getBarcode
().
setLockId
(
null
);
newPosLis
.
add
(
pos
);
}
}
//TODO 需要转移到工单状态改变中处理
liteOrder
.
setLockReelList
(
newPosLis
);
}
}
//绑定料需要解绑
storagePosManager
.
clearLockPos
(
liteOrder
.
getOrderNo
());
log
.
info
(
"关闭工单["
+
orderNo
+
"]成功"
);
log
.
info
(
"关闭工单["
+
orderNo
+
"]成功"
);
liteOrder
.
setClosed
(
true
);
liteOrder
.
setClosed
(
true
);
liteOrderManager
.
save
(
liteOrder
);
liteOrderManager
.
save
(
liteOrder
);
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
a6ea505
...
@@ -4,6 +4,7 @@ import com.neotel.smfcore.common.base.BasePo;
...
@@ -4,6 +4,7 @@ import com.neotel.smfcore.common.base.BasePo;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
lombok.Data
;
import
lombok.Data
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
org.springframework.data.mongodb.core.mapping.Document
;
...
@@ -92,6 +93,13 @@ public class LiteOrder extends BasePo implements Serializable {
...
@@ -92,6 +93,13 @@ public class LiteOrder extends BasePo implements Serializable {
@Transient
@Transient
private
List
<
LiteOrderItem
>
orderItems
;
private
List
<
LiteOrderItem
>
orderItems
;
/**
* 锁定的物料,关闭工单时,TMS需要更新锁定物料状态
*/
@Transient
private
List
<
StoragePos
>
lockReelList
;
/**
/**
* 建议出仓时间
* 建议出仓时间
*/
*/
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/HanwhaApiHandler.java
查看文件 @
a6ea505
...
@@ -72,78 +72,83 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
...
@@ -72,78 +72,83 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
@Override
@Override
public
Barcode
canPutInBeforeResolve
(
String
codeResolveUrl
,
CodeValidateParam
params
)
throws
ValidateException
{
public
Barcode
canPutInBeforeResolve
(
String
codeResolveUrl
,
CodeValidateParam
params
)
throws
ValidateException
{
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码"
);
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码"
);
CodeBean
codeBean
=
BarcodeRule
.
splitCodeAndSize
(
params
.
getCode
());
String
[]
codeStr
=
params
.
getCode
().
split
(
"##"
);
String
fullCode
=
codeBean
.
getCodeStr
();
for
(
int
i
=
codeStr
.
length
-
1
;
i
>=
0
;
i
--)
{
if
(
fullCode
.
endsWith
(
"##"
))
{
fullCode
=
fullCode
.
substring
(
0
,
fullCode
.
length
()
-
2
);
String
codeStr1
=
codeStr
[
i
];
}
CodeBean
codeBean
=
BarcodeRule
.
splitCodeAndSize
(
codeStr1
);
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码到完整条码:"
+
fullCode
+
",调用 RequestGetPartInfo"
);
String
fullCode
=
codeBean
.
getCodeStr
();
List
<
TMSPart
>
result
=
tmsApis
.
RequestGetPartInfo
(
0
,
fullCode
);
if
(
fullCode
.
endsWith
(
"##"
))
{
if
(
result
.
size
()
>
0
)
{
fullCode
=
fullCode
.
substring
(
0
,
fullCode
.
length
()
-
2
);
String
pn
=
result
.
get
(
0
).
getPartName
();
String
code
=
result
.
get
(
0
).
getReelCode
();
int
count
=
result
.
get
(
0
).
getResponseCount
();
boolean
needS
=
false
;
if
(
ObjectUtil
.
isEmpty
(
pn
))
{
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] RequestGetPartInfo ,PN为空"
);
return
null
;
}
if
(
ObjectUtil
.
isEmpty
(
code
))
{
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] RequestGetPartInfo ,唯一码为空"
);
return
null
;
}
if
(
count
<=
0
)
{
count
=
0
;
}
}
int
width
=
7
;
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码到完整条码:"
+
fullCode
+
",调用 RequestGetPartInfo"
);
int
height
=
8
;
List
<
TMSPart
>
result
=
tmsApis
.
RequestGetPartInfo
(
0
,
fullCode
);
if
(
result
.
size
()
>
0
)
{
String
pn
=
result
.
get
(
0
).
getPartName
();
String
code
=
result
.
get
(
0
).
getReelCode
();
int
count
=
result
.
get
(
0
).
getResponseCount
();
boolean
needS
=
false
;
if
(
ObjectUtil
.
isEmpty
(
pn
))
{
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] RequestGetPartInfo ,PN为空"
);
return
null
;
}
if
(
ObjectUtil
.
isEmpty
(
code
))
{
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] RequestGetPartInfo ,唯一码为空"
);
return
null
;
}
if
(
count
<=
0
)
{
count
=
0
;
}
int
width
=
7
;
int
height
=
8
;
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
code
);
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
code
);
if
(
barcode
==
null
)
{
if
(
barcode
==
null
)
{
barcode
=
new
Barcode
();
barcode
=
new
Barcode
();
}
}
barcode
.
setFullCode
(
params
.
getCode
());
barcode
.
setFullCode
(
params
.
getCode
());
barcode
.
setAmount
(
count
);
barcode
.
setAmount
(
count
);
barcode
.
setPartNumber
(
pn
);
barcode
.
setPartNumber
(
pn
);
barcode
.
setBarcode
(
code
);
barcode
.
setBarcode
(
code
);
barcode
.
setHeight
(
height
);
barcode
.
setHeight
(
height
);
barcode
.
setPlateSize
(
width
);
barcode
.
setPlateSize
(
width
);
Date
proDate
=
getDate
(
result
.
get
(
0
).
getProductionDate
());
Date
proDate
=
getDate
(
result
.
get
(
0
).
getProductionDate
());
if
(
proDate
!=
null
)
{
if
(
proDate
!=
null
)
{
barcode
.
setProduceDate
(
proDate
);
barcode
.
setProduceDate
(
proDate
);
}
}
Date
expDate
=
getDate
(
result
.
get
(
0
).
getExpiryDate
());
Date
expDate
=
getDate
(
result
.
get
(
0
).
getExpiryDate
());
if
(
expDate
!=
null
)
{
if
(
expDate
!=
null
)
{
barcode
.
setExpireDate
(
expDate
);
barcode
.
setExpireDate
(
expDate
);
}
}
//判断Pn是否存在
//判断Pn是否存在
Component
component
=
componentManager
.
findOneByPN
(
pn
);
Component
component
=
componentManager
.
findOneByPN
(
pn
);
if
(
component
!=
null
)
{
if
(
component
!=
null
)
{
log
.
info
(
"未找到PN["
+
pn
+
"] 新建一个"
);
log
.
info
(
"未找到PN["
+
pn
+
"] 新建一个"
);
//找到了,复制一个
//找到了,复制一个
Component
newComponent
=
new
Component
();
Component
newComponent
=
new
Component
();
newComponent
.
setProvider
(
""
);
newComponent
.
setProvider
(
""
);
newComponent
.
setPlateSize
(
width
);
newComponent
.
setPlateSize
(
width
);
newComponent
.
setHeight
(
height
);
newComponent
.
setHeight
(
height
);
newComponent
.
setPartNumber
(
component
.
getPartNumber
());
newComponent
.
setPartNumber
(
component
.
getPartNumber
());
newComponent
.
setAmount
(
count
);
newComponent
.
setAmount
(
count
);
newComponent
.
setName
(
component
.
getPartNumber
());
newComponent
.
setName
(
component
.
getPartNumber
());
component
=
componentManager
.
save
(
component
);
component
=
componentManager
.
save
(
component
);
}
}
barcode
=
barcodeManager
.
saveBarcode
(
barcode
);
barcode
=
barcodeManager
.
saveBarcode
(
barcode
);
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] RequestGetPartInfo ,PN=["
+
pn
+
"],code=["
+
code
+
"],count=["
+
count
+
"]新增条码准备入库"
);
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] RequestGetPartInfo ,PN=["
+
pn
+
"],code=["
+
code
+
"],count=["
+
count
+
"]新增条码准备入库"
);
return
barcode
;
return
barcode
;
}
}
else
{
else
{
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码到完整条码:"
+
fullCode
+
",调用 RequestGetPartInfo 未收到反馈"
);
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码到完整条码:"
+
fullCode
+
",调用 RequestGetPartInfo 未收到反馈"
);
throw
new
ValidateException
(
"smfcore.mesApi.inCheck.error"
,
"RequestGetPartInfo no data"
,
new
String
[]{
" no data "
}
);
throw
new
ValidateException
(
"smfcore.mesApi.inCheck.error"
,
"RequestGetPartInfo no data"
);
}
}
}
// return null;
return
null
;
}
}
private
Date
getDate
(
String
str
)
{
private
Date
getDate
(
String
str
)
{
...
@@ -196,7 +201,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
...
@@ -196,7 +201,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
}
}
if
(
task
.
isFinished
()||
task
.
isEnd
())
{
if
(
task
.
isFinished
()||
task
.
isEnd
())
{
List
<
TMSPartReelPos
>
list
=
new
ArrayList
<>();
List
<
TMSPartReelPos
>
list
=
new
ArrayList
<>();
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
task
.
getPartNumber
(),
task
.
getBarcode
(),
task
.
getNum
(),
task
.
getCid
(),
task
.
getPosName
(),
1
,
task
.
getUpdateDate
().
getTime
(),
-
1
);
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
task
.
getPartNumber
(),
task
.
getBarcode
(),
task
.
getNum
(),
task
.
getCid
(),
task
.
getPosName
(),
1
,
task
.
getUpdateDate
().
getTime
(),
-
1
,
0
);
list
.
add
(
bean
);
list
.
add
(
bean
);
log
.
info
(
"barcode["
+
task
.
getBarcode
()
+
"],pn["
+
task
.
getPartNumber
()
+
"],posName["
+
task
.
getPosName
()
+
"]入库完成,调用 RequestSyncPartReelPosInfo"
);
log
.
info
(
"barcode["
+
task
.
getBarcode
()
+
"],pn["
+
task
.
getPartNumber
()
+
"],posName["
+
task
.
getPosName
()
+
"]入库完成,调用 RequestSyncPartReelPosInfo"
);
...
@@ -211,7 +216,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
...
@@ -211,7 +216,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
}
}
if
(
task
.
isFinished
()||
task
.
isEnd
())
{
if
(
task
.
isFinished
()||
task
.
isEnd
())
{
List
<
TMSPartReelPos
>
list
=
new
ArrayList
<>();
List
<
TMSPartReelPos
>
list
=
new
ArrayList
<>();
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
task
.
getPartNumber
(),
task
.
getBarcode
(),
task
.
getNum
(),
task
.
getCid
(),
task
.
getPosName
(),
2
,
-
1
,
task
.
getUpdateDate
().
getTime
());
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
task
.
getPartNumber
(),
task
.
getBarcode
(),
task
.
getNum
(),
task
.
getCid
(),
task
.
getPosName
(),
2
,
-
1
,
task
.
getUpdateDate
().
getTime
()
,
0
);
list
.
add
(
bean
);
list
.
add
(
bean
);
log
.
info
(
"barcode["
+
task
.
getBarcode
()
+
"],pn["
+
task
.
getPartNumber
()
+
"],posName["
+
task
.
getPosName
()
+
"]出库完成,调用 RequestSyncPartReelPosInfo"
);
log
.
info
(
"barcode["
+
task
.
getBarcode
()
+
"],pn["
+
task
.
getPartNumber
()
+
"],posName["
+
task
.
getPosName
()
+
"]出库完成,调用 RequestSyncPartReelPosInfo"
);
...
@@ -224,11 +229,17 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
...
@@ -224,11 +229,17 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
}
}
@Override
@Override
public
void
onOrderStatusChange
(
String
orderNotifyUrl
,
LiteOrder
liteOrder
)
{
public
void
onOrderStatusChange
(
String
orderNotifyUrl
,
LiteOrder
liteOrder
)
{
//ResponseUpdateDeliveryReserveState-all work order
//ResponseUpdateDeliveryReserveState-all work order
if
(
liteOrder
.
isClosed
())
{
if
(
liteOrder
.
isClosed
())
{
//工单取消,且解锁了物料,需要通知TMS
if
(
liteOrder
.
getLockReelList
()
!=
null
&&
liteOrder
.
getLockReelList
().
size
()>
0
){
tmsUtil
.
SyncReelLockS
(
liteOrder
.
getLockReelList
());
}
String
isCancel
=
liteOrder
.
getAppend
(
"cancel"
);
String
isCancel
=
liteOrder
.
getAppend
(
"cancel"
);
if
(
isCancel
.
equals
(
"true"
)){
if
(
isCancel
.
equals
(
"true"
)){
log
.
info
(
"工单取消处理中,此处不通知TMS"
);
log
.
info
(
"工单取消处理中,此处不通知TMS"
);
...
@@ -348,13 +359,14 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
...
@@ -348,13 +359,14 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
if
(
pos
.
getBarcode
()
==
null
)
{
if
(
pos
.
getBarcode
()
==
null
)
{
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
""
,
""
,
-
1
,
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
""
,
""
,
-
1
,
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
-
1
,
-
1
);
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
-
1
,
-
1
,
0
);
list
.
add
(
bean
);
list
.
add
(
bean
);
}
else
{
}
else
{
Barcode
barcode
=
pos
.
getBarcode
();
Barcode
barcode
=
pos
.
getBarcode
();
int
s
=
ObjectUtil
.
isNotEmpty
(
barcode
.
getLockId
())?
1
:
0
;
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
barcode
.
getPartNumber
(),
barcode
.
getBarcode
(),
barcode
.
getAmount
(),
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
barcode
.
getPartNumber
(),
barcode
.
getBarcode
(),
barcode
.
getAmount
(),
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
barcode
.
getPutInDate
().
getTime
(),
-
1
);
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
barcode
.
getPutInDate
().
getTime
(),
-
1
,
s
);
list
.
add
(
bean
);
list
.
add
(
bean
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSCommunicator.java
查看文件 @
a6ea505
...
@@ -143,10 +143,13 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -143,10 +143,13 @@ public class TMSCommunicator implements WsMsgReceivedListener {
log
.
info
(
"启动 webService 状态检查"
);
log
.
info
(
"启动 webService 状态检查"
);
while
(
true
)
{
while
(
true
)
{
try
{
try
{
TimeUnit
.
SECONDS
.
sleep
(
5
);
TimeUnit
.
SECONDS
.
sleep
(
4
);
if
(
needCheck
)
{
if
(
needCheck
)
{
stateCheck
();
stateCheck
();
}
}
if
(
waitSync
&&
System
.
currentTimeMillis
()>
syncTime
){
SyncData
();
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"webService"
+
e
.
getMessage
());
log
.
error
(
"webService"
+
e
.
getMessage
());
}
}
...
@@ -183,6 +186,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -183,6 +186,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
websocket
=
new
MyWebSocketClient
(
new
URI
(
wsURL
),
this
);
websocket
=
new
MyWebSocketClient
(
new
URI
(
wsURL
),
this
);
websocket
.
setConnectionLostTimeout
(
3000
);
websocket
.
setConnectionLostTimeout
(
3000
);
websocket
.
connect
();
websocket
.
connect
();
SetNeedSync
(
false
);
}
catch
(
URISyntaxException
e
)
{
}
catch
(
URISyntaxException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
...
@@ -193,10 +197,19 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -193,10 +197,19 @@ public class TMSCommunicator implements WsMsgReceivedListener {
parseMessage
(
message
);
parseMessage
(
message
);
}
}
private
boolean
waitSync
=
false
;
private
Long
syncTime
=
0L
;
private
void
SetNeedSync
(
boolean
needS
){
waitSync
=
needS
;
syncTime
=
System
.
currentTimeMillis
()+
5000
;
}
@Override
@Override
public
void
onOpen
()
{
public
void
onOpen
()
{
Initialize
(
clientType
,
clientSubType
);
Initialize
(
clientType
,
clientSubType
);
SyncData
();
SetNeedSync
(
true
);
//三到五秒后再同步数据
// SyncData();
}
}
public
static
boolean
isEnable
()
{
public
static
boolean
isEnable
()
{
...
@@ -285,6 +298,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -285,6 +298,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
@Override
@Override
public
void
run
()
{
public
void
run
()
{
try
{
try
{
SetNeedSync
(
false
);
// 同步数据
// 同步数据
List
<
String
>
cids
=
new
ArrayList
<>(
dataCache
.
getAllStorage
().
keySet
());
List
<
String
>
cids
=
new
ArrayList
<>(
dataCache
.
getAllStorage
().
keySet
());
SyncStorageConnectionInfo
(
cids
.
toArray
(
new
String
[
cids
.
size
()]),
new
Integer
[]{});
SyncStorageConnectionInfo
(
cids
.
toArray
(
new
String
[
cids
.
size
()]),
new
Integer
[]{});
...
@@ -325,13 +339,15 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -325,13 +339,15 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if
(
pos
.
getBarcode
()
==
null
)
{
if
(
pos
.
getBarcode
()
==
null
)
{
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
""
,
""
,
-
1
,
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
""
,
""
,
-
1
,
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
-
1
,
-
1
);
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
-
1
,
-
1
,
0
);
list
.
add
(
bean
);
list
.
add
(
bean
);
}
else
{
}
else
{
Barcode
barcode
=
pos
.
getBarcode
();
Barcode
barcode
=
pos
.
getBarcode
();
int
s
=
ObjectUtil
.
isNotEmpty
(
barcode
.
getLockId
())?
1
:
0
;
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
barcode
.
getPartNumber
(),
barcode
.
getBarcode
(),
barcode
.
getAmount
(),
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
barcode
.
getPartNumber
(),
barcode
.
getBarcode
(),
barcode
.
getAmount
(),
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
barcode
.
getPutInDate
().
getTime
(),
-
1
);
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
barcode
.
getPutInDate
().
getTime
(),
-
1
,
s
);
list
.
add
(
bean
);
list
.
add
(
bean
);
}
}
...
@@ -486,8 +502,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -486,8 +502,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
break
;
break
;
case
"RequestDeliveryOrderByLocation"
:
case
"RequestDeliveryOrderByLocation"
:
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
Locations
=
getMapValue
(
msgMap
,
"Locations"
);
Locations
=
getTMSPosList
(
msgMap
,
"Locations"
);
//3.10 RequestDeliveryOrderByLocation
// 2024-12-11 18:05:08.428 INFO [TMSCommunicator.java:504] - onMsgReceived: requestID=[1],Topic=[RequestDeliveryOrderByLocation],message:
// [{"Locations":[{"RackID":"01","RowID":"111","ColID":"11"}],"Topic":"RequestDeliveryOrderByLocation","id":1,"uid":74240}],
//3.10 RequestDeliveryOrderByLocation
RequestDeliveryOrderByLocation
(
requestID
,
Locations
);
RequestDeliveryOrderByLocation
(
requestID
,
Locations
);
break
;
break
;
case
"RequestDeliveryOrderByReelCd"
:
case
"RequestDeliveryOrderByReelCd"
:
...
@@ -524,7 +543,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -524,7 +543,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
case
"RequestDeliveryReserveByLocation"
:
case
"RequestDeliveryReserveByLocation"
:
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
Locations
=
get
MapValue
(
msgMap
,
"Locations"
);
Locations
=
get
TMSPosList
(
msgMap
,
"Locations"
);
// 3.16 ,RequestDeliveryReserveByLocation
// 3.16 ,RequestDeliveryReserveByLocation
RequestDeliveryReserveByLocation
(
requestID
,
Locations
);
RequestDeliveryReserveByLocation
(
requestID
,
Locations
);
break
;
break
;
...
@@ -601,6 +620,21 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -601,6 +620,21 @@ public class TMSCommunicator implements WsMsgReceivedListener {
return
null
;
return
null
;
}
}
private
static
List
<
TMSPos
>
getTMSPosList
(
Map
<
String
,
Object
>
resultMap
,
String
key
)
throws
ApiException
{
List
<
TMSPos
>
results
=
new
ArrayList
<>();
if
(
key
!=
null
&&
!
key
.
isEmpty
())
{
Object
value
=
resultMap
.
get
(
key
);
if
(
value
!=
null
)
{
List
<
Object
>
result
=(
List
<
Object
>)
value
;
for
(
Object
str
:
result
)
{
TMSPos
obj
=
TMSPos
.
ToBean
((
Map
<
String
,
Object
>)
str
);
results
.
add
(
obj
);
}
}
}
return
results
;
}
public
void
OrderProEndUpdateState
(
String
requestCmd
,
int
requestID
,
LiteOrder
liteOrder
){
public
void
OrderProEndUpdateState
(
String
requestCmd
,
int
requestID
,
LiteOrder
liteOrder
){
...
@@ -929,8 +963,10 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -929,8 +963,10 @@ public class TMSCommunicator implements WsMsgReceivedListener {
liteOrder
=
liteOrderCache
.
getLiteOrder
(
liteOrder
.
getOrderNo
());
liteOrder
=
liteOrderCache
.
getLiteOrder
(
liteOrder
.
getOrderNo
());
if
(
liteOrder
!=
null
)
{
if
(
liteOrder
!=
null
)
{
List
<
StoragePos
>
lockPosList
=
storagePosManager
.
findLockPos
(
liteOrder
.
getOrderNo
());
List
<
TMSPart
>
parts
=
tmsUtil
.
GetReserveList
(
requestCmd
,
liteOrder
);
//同步锁定物料状态
tmsUtil
.
SyncReelLockS
(
lockPosList
);
List
<
TMSPart
>
parts
=
tmsUtil
.
GetReserveList
(
requestCmd
,
liteOrder
,
lockPosList
);
ResponseDeliveryReserve
(
responseCmd
,
requestID
,
parts
,
liteOrder
.
getOrderNo
(),
""
);
ResponseDeliveryReserve
(
responseCmd
,
requestID
,
parts
,
liteOrder
.
getOrderNo
(),
""
);
...
@@ -1004,6 +1040,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -1004,6 +1040,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
posResultMap
.
put
(
pos
.
getPosName
(),
TMS_Code
.
CODE_2010
);
//准备出库
posResultMap
.
put
(
pos
.
getPosName
(),
TMS_Code
.
CODE_2010
);
//准备出库
log
.
info
(
requestCmd
+
" : pos="
+
pos
.
getPosName
()
+
",锁定成功,code="
+
TMS_Code
.
CODE_2010
);
log
.
info
(
requestCmd
+
" : pos="
+
pos
.
getPosName
()
+
",锁定成功,code="
+
TMS_Code
.
CODE_2010
);
}
}
//同步锁定物料状态
tmsUtil
.
SyncReelLockS
(
lockPosList
);
}
}
//返回消息
//返回消息
...
@@ -1074,6 +1112,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -1074,6 +1112,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
posResultMap
.
put
(
pos
.
getBarcode
().
getBarcode
(),
TMS_Code
.
CODE_2010
);
//准备出库
posResultMap
.
put
(
pos
.
getBarcode
().
getBarcode
(),
TMS_Code
.
CODE_2010
);
//准备出库
log
.
info
(
requestCmd
+
" : barcode="
+
pos
.
getBarcode
().
getBarcode
()
+
",锁定成功,code="
+
TMS_Code
.
CODE_2010
);
log
.
info
(
requestCmd
+
" : barcode="
+
pos
.
getBarcode
().
getBarcode
()
+
",锁定成功,code="
+
TMS_Code
.
CODE_2010
);
}
}
//同步锁定物料状态
tmsUtil
.
SyncReelLockS
(
lockPosList
);
}
}
//返回消息
//返回消息
...
@@ -1217,22 +1257,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -1217,22 +1257,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
public
void
ResponseDeliveryReserve
(
String
topic
,
int
requestID
,
List
<
TMSPart
>
Parts
,
String
OrderCode
,
String
ReserveCode
)
{
public
void
ResponseDeliveryReserve
(
String
topic
,
int
requestID
,
List
<
TMSPart
>
Parts
,
String
OrderCode
,
String
ReserveCode
)
{
ResponseDeliveryOrder
(
topic
,
requestID
,
Parts
,
OrderCode
,
ReserveCode
);
ResponseDeliveryOrder
(
topic
,
requestID
,
Parts
,
OrderCode
,
ReserveCode
);
// Map<String, Object> dataMap = new HashMap<>();
// dataMap.put("Topic", topic);
// dataMap.put("RequestID", requestID);
// List<Map<String, Object>> arrayList = new ArrayList<>();
// for (TMSPart Part : Parts) {
// arrayList.add(Part.getJson());
// }
//
// if(ObjectUtil.isEmpty(ReserveCode)){
// ReserveCode= OrderCode;
// }
//
// dataMap.put("PartList", arrayList);
// dataMap.put("OrderCode", OrderCode);
// dataMap.put("ReserveCode", ReserveCode);
// SendData(dataMap);
}
}
/**
/**
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSUtil.java
查看文件 @
a6ea505
此文件的差异被折叠,
点击展开。
src/main/java/com/neotel/smfcore/custom/hanwha/handler/bean/TMSPartReelPos.java
查看文件 @
a6ea505
...
@@ -22,7 +22,10 @@ public class TMSPartReelPos extends TMSPos implements Serializable {
...
@@ -22,7 +22,10 @@ public class TMSPartReelPos extends TMSPos implements Serializable {
*/
*/
private
int
flag
=
0
;
private
int
flag
=
0
;
private
int
state
=
0
;
/**
* 1=锁定,0=未锁定
*/
private
int
state
=
0
;
//yyyy-MM-dd HH:mm:ss
//yyyy-MM-dd HH:mm:ss
private
String
indate
;
private
String
indate
;
...
@@ -51,17 +54,18 @@ public class TMSPartReelPos extends TMSPos implements Serializable {
...
@@ -51,17 +54,18 @@ public class TMSPartReelPos extends TMSPos implements Serializable {
map
.
put
(
"Flag"
,
getFlag
());
map
.
put
(
"Flag"
,
getFlag
());
map
.
put
(
"Indate"
,
getIndate
());
map
.
put
(
"Indate"
,
getIndate
());
map
.
put
(
"Outdate"
,
getOutdate
());
map
.
put
(
"Outdate"
,
getOutdate
());
map
.
put
(
"State"
,
getState
());
return
map
;
return
map
;
}
}
public
static
TMSPartReelPos
newBean
(
String
pn
,
String
barcode
,
int
count
,
String
cid
,
String
posName
,
int
flag
,
long
inTime
,
long
outTime
)
{
public
static
TMSPartReelPos
newBean
(
String
pn
,
String
barcode
,
int
count
,
String
cid
,
String
posName
,
int
flag
,
long
inTime
,
long
outTime
,
int
reelS
)
{
TMSPartReelPos
bean
=
new
TMSPartReelPos
();
TMSPartReelPos
bean
=
new
TMSPartReelPos
();
bean
.
setPartName
(
pn
);
bean
.
setPartName
(
pn
);
bean
.
setReelCode
(
barcode
);
bean
.
setReelCode
(
barcode
);
bean
.
setCount
(
count
);
bean
.
setCount
(
count
);
bean
.
setRackID
(
cid
);
bean
.
setRackID
(
cid
);
bean
.
setFlag
(
flag
);
bean
.
setFlag
(
flag
);
bean
.
setState
(
0
);
bean
.
setState
(
reelS
);
bean
.
setPosName
(
posName
);
bean
.
setPosName
(
posName
);
String
format
=
"yyyy-MM-dd HH:mm:ss"
;
String
format
=
"yyyy-MM-dd HH:mm:ss"
;
if
(
inTime
>
0
)
{
if
(
inTime
>
0
)
{
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/bean/TMSPos.java
查看文件 @
a6ea505
...
@@ -28,6 +28,31 @@ public class TMSPos implements Serializable {
...
@@ -28,6 +28,31 @@ public class TMSPos implements Serializable {
jObject
.
put
(
"ColID"
,
ColID
);
jObject
.
put
(
"ColID"
,
ColID
);
return
jObject
;
return
jObject
;
}
}
public
static
TMSPos
ToBean
(
Map
<
String
,
Object
>
map
)
{
try
{
TMSPos
obj
=
new
TMSPos
();
obj
.
setRackID
(
getMapValue
(
map
,
"RackID"
));
obj
.
setRowID
(
getMapValue
(
map
,
"RowID"
));
obj
.
setColID
(
getMapValue
(
map
,
"ColID"
));
return
obj
;
}
catch
(
Exception
ex
)
{
log
.
error
(
"转换为TMSPos出错:"
+
ex
.
toString
());
return
null
;
}
}
private
static
<
T
>
T
getMapValue
(
Map
<
String
,
Object
>
resultMap
,
String
key
)
{
if
(
key
!=
null
&&
!
key
.
isEmpty
())
{
Object
value
=
resultMap
.
get
(
key
);
if
(
value
!=
null
)
{
return
(
T
)
value
;
}
}
return
null
;
}
public
String
getPosName
(){
public
String
getPosName
(){
return
getRowID
()+
"_"
+
getColID
();
return
getRowID
()+
"_"
+
getColID
();
}
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论