Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit dcc32d1c
由
LN
编写于
2024-08-12 17:34:09 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.设备上线时需要同步reel到韩华。
2.工单详情相同PN会有重复数据。 3.韩华RequestDeliveryOrder同时只执行一个工单,如有未关闭的返回2014。 4.
1 个父辈
1f4db1e4
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
96 行增加
和
18 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/system/util/DevicesStatusUtil.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/TMS_Code.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
dcc32d1
...
...
@@ -871,8 +871,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
//状态变化
if
(
statusBean
.
getStatus
()!=
preStatus
){
//如果是从离线到上线,或者从上线到离线才通知
if
(
preStatus
==-
1
||
preStatus
==
0
){
smfApi
.
deviceStatusChanges
(
new
String
[]{
statusBean
.
getCid
()},
new
Integer
[]{
statusBean
.
getStatus
()});
}
}
// //判断是否刚刚上线
// StatusBean bean = DevicesStatusUtil.getStatusBean(statusBean.getCid());
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
dcc32d1
...
...
@@ -587,7 +587,8 @@ public class LiteOrderCache {
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
log
.
info
(
"工单["
+
orderNo
+
"]出库前需要进行缺料检查"
);
log
.
info
(
"工单["
+
orderNo
+
"]出库前需要进行缺料检查"
);
//需要过滤掉刚刚查找到的库位号
List
<
String
>
findPosIds
=
new
ArrayList
<>();
//其他出库模式一次性全部生成任务
List
<
LiteOrderItem
>
newItems
=
new
ArrayList
<>();
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
...
...
@@ -600,6 +601,7 @@ public class LiteOrderCache {
int
remainReelCount
=
orderItem
.
getNeedReelCount
()
-
orderItem
.
getTotalOutReelCount
();
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
excludePosIds
.
addAll
(
findPosIds
);
//此PN未完成
if
(
remainNum
>
0
||
remainReelCount
>
0
)
{
if
(
outBom
)
{
...
...
@@ -640,9 +642,10 @@ public class LiteOrderCache {
liteOrderItemManager
.
save
(
orderItem
);
break
;
}
else
{
findPosIds
.
add
(
pos
.
getId
());
assignNum
=
assignNum
+
pos
.
getBarcode
().
getAmount
();
assignReelCount
=
assignReelCount
+
1
;
excludePosIds
.
add
(
pos
.
getPosName
());
// excludePosIds.add(pos.getId
());
}
}
}
...
...
src/main/java/com/neotel/smfcore/core/system/util/DevicesStatusUtil.java
查看文件 @
dcc32d1
...
...
@@ -188,7 +188,7 @@ public class DevicesStatusUtil {
if
(
oldMsgs
!=
null
)
{
for
(
MsgInfo
old
:
oldMsgs
)
{
if
(
old
.
getMsgKey
().
equals
(
msg
.
getMsgKey
())
&&
old
.
getMsg
().
equals
(
msg
.
getMsg
()))
{
if
(
ObjectUtil
.
isNotEmpty
(
old
.
getMsgKey
())&&
ObjectUtil
.
isNotEmpty
(
msg
.
getMsgKey
())&&
old
.
getMsgKey
().
equals
(
msg
.
getMsgKey
())
&&
old
.
getMsg
().
equals
(
msg
.
getMsg
()))
{
newMsg
=
false
;
break
;
}
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/HanwhaApiHandler.java
查看文件 @
dcc32d1
...
...
@@ -200,6 +200,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
List
<
TMSRackStatus
>
SyncRackStatusDatas
=
new
ArrayList
<>();
List
<
String
>
storageIds
=
new
ArrayList
<>();
List
<
Storage
>
needSyncDataList
=
new
ArrayList
<>();
int
i
=
0
;
for
(
String
cid
:
cids
)
{
...
...
@@ -224,6 +225,18 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
}
}
if
(
status
==-
1
||
status
==
0
||
status
>=
1
){
if
(
status
>=
1
){
needSyncDataList
.
add
(
storage
);
log
.
info
(
"设备"
+
cid
+
"状态改变,当前状态:"
+
status
+
",需要通知韩华,并同步物料信息"
);
}
else
{
log
.
info
(
"设备"
+
cid
+
"状态改变,当前状态:"
+
status
+
",需要通知韩华"
);
}
}
else
{
continue
;
}
int
flag
=
0
;
if
(
status
>=
1
)
{
flag
=
2
;
...
...
@@ -249,8 +262,40 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
if
(
storageIds
.
size
()
>
0
)
{
tmsApis
.
RequestSyncRackStatusInfo
(
0
,
SyncRackStatusDatas
);
}
if
(
needSyncDataList
.
size
()>
0
){
for
(
Storage
st
:
needSyncDataList
)
{
SyncStorageData
(
st
,
"单个设备上线"
);
}
}
}
private
void
SyncStorageData
(
Storage
storage
,
String
logName
)
{
List
<
TMSPartReelPos
>
list
=
new
ArrayList
<>();
List
<
StoragePos
>
allPos
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
// if (storage.isNLShelf() || storage.isMimoG2() ||storage.isBatchStorage()) {
if
(
allPos
!=
null
)
{
for
(
StoragePos
pos
:
allPos
)
{
if
(
pos
.
getBarcode
()
==
null
)
{
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
""
,
""
,
-
1
,
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
-
1
,
-
1
);
list
.
add
(
bean
);
}
else
{
Barcode
barcode
=
pos
.
getBarcode
();
TMSPartReelPos
bean
=
TMSPartReelPos
.
newBean
(
barcode
.
getPartNumber
(),
barcode
.
getBarcode
(),
barcode
.
getAmount
(),
storage
.
getCid
(),
pos
.
getPosName
(),
4
,
barcode
.
getPutInDate
().
getTime
(),
-
1
);
list
.
add
(
bean
);
}
}
List
<
TMSPart
>
result
=
tmsApis
.
RequestSyncPartReelPosInfo
(
0
,
list
);
log
.
info
(
logName
+
"RequestSyncPartReelPosInfo storageCID="
+
storage
.
getCid
()
+
", count="
+
list
.
size
());
}
}
public
void
UpdateStorageConnectionInfo
(
String
[]
cids
,
Integer
[]
statusList
)
{
if
(!
TMSCommunicator
.
isEnable
())
{
return
;
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSCommunicator.java
查看文件 @
dcc32d1
...
...
@@ -19,6 +19,7 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
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.enums.LITEORDER_STATUS
;
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
;
...
...
@@ -592,6 +593,15 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if
(
items
.
size
()
<=
0
)
{
return
null
;
}
//判断是否有已执行的工单,有的话创建失败
Query
query
=
new
Query
(
Criteria
.
where
(
"status"
).
ne
(
LITEORDER_STATUS
.
CLOSED
));
List
<
LiteOrder
>
orderList
=
liteOrderManager
.
findByQuery
(
query
);
if
(
orderList
.
size
()>
0
){
log
.
info
(
"RequestDelivery: 当前有未关闭的工单"
+
orderList
.
size
()+
",创建工单失败"
);
return
null
;
}
LiteOrder
liteOrder
=
new
LiteOrder
(
orderNo
,
items
);
liteOrder
.
setSource
(
"DeliveryOrder"
);
LiteOrder
dbOrder
=
liteOrderManager
.
findByOrderNo
(
liteOrder
.
getOrderNo
());
...
...
@@ -628,7 +638,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
* @param partCount
* @param towerLamp
*/
private
void
RequestDeliveryOrder
(
int
requestID
,
List
<
String
>
partItem
,
List
<
Integer
>
partCount
,
boolean
towerLamp
)
{
private
synchronized
void
RequestDeliveryOrder
(
int
requestID
,
List
<
String
>
partItem
,
List
<
Integer
>
partCount
,
boolean
towerLamp
)
{
// 3.9 ResponseDeliveryOrder
TMSReserve
tmsReserve
=
null
;
...
...
@@ -636,7 +646,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if
(
partItem
==
null
||
partCount
==
null
||
partItem
.
size
()
<=
0
||
partCount
.
size
()
<=
0
)
{
log
.
info
(
"RequestDeliveryOrder 数据不完整,直接返回"
);
ResponseDeliveryOrder
(
requestID
,
new
ArrayList
<>(),
""
);
ResponseDeliveryOrder
(
requestID
,
new
ArrayList
<>(),
""
,
""
);
return
;
}
String
soName
=
"DO"
+
DateUtil
.
toDateString
(
new
Date
(),
"yyyyMMddHHmmss"
);
...
...
@@ -655,6 +665,16 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
LiteOrder
liteOrder
=
createOrder
(
requestID
,
liteOrderItems
,
soName
,
true
);
if
(
liteOrder
==
null
){
//同时只能有一个工单执行,创建工单时不能有未关闭的工单。返回2014
List
<
TMSPart
>
parts
=
new
ArrayList
<>();
for
(
LiteOrderItem
item
:
liteOrderItems
)
{
TMSPart
p
=
TMSPart
.
newBean
(
parts
.
size
(),
item
.
getPn
(),
""
,
item
.
getNeedNum
(),
0
,
TMS_Code
.
CODE_2014
,
""
,
""
);
parts
.
add
(
p
);
}
ResponseDeliveryOrder
(
requestID
,
parts
,
""
,
""
);
}
else
{
//能够出库成功返回2010,库存不足范围2002 Out Of Part
liteOrder
=
liteOrderCache
.
getLiteOrder
(
liteOrder
.
getOrderNo
());
if
(
liteOrder
!=
null
)
{
...
...
@@ -669,6 +689,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
for
(
DataLog
task
:
dataLogs
)
{
if
(
task
.
isCheckOutTask
()
&&
task
.
getSourceName
().
equals
(
liteOrder
.
getOrderNo
())
&&
task
.
getPartNumber
().
equals
(
item
.
getPn
()))
{
if
(
task
.
getSubSourceId
().
equals
(
item
.
getId
()))
{
int
requestNum
=
task
.
getNum
();
curroNum
+=
task
.
getNum
();
if
(
curroNum
>
item
.
getNeedNum
())
{
...
...
@@ -679,6 +700,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
parts
.
add
(
p
);
}
}
}
if
(
curroNum
<=
0
)
{
...
...
@@ -706,26 +728,25 @@ public class TMSCommunicator implements WsMsgReceivedListener {
// TMSPart part = TMSPart.newBean("PN1", "Barcode1", 999, 999, TMS_Code.CODE_2002, "", "");
// parts.add(part);
ResponseDeliveryOrder
(
requestID
,
parts
,
liteOrder
.
getOrderNo
()
);
ResponseDeliveryOrder
(
requestID
,
parts
,
liteOrder
.
getOrderNo
(),
""
);
//如果工单执行中,发送ResponseUpdateDeliveryReserveState,否则不需要
if
(
liteOrder
.
isClosed
())
{
if
(
liteOrder
.
isClosed
())
{
log
.
info
(
"RequestDeliveryOrder 工单已关闭,不需要发送 发送ResponseUpdateDeliveryReserveState"
);
}
else
{
}
else
{
tmsReserve
=
GetOrderInfo
(
liteOrder
);
List
<
TMSReserve
>
tmsReserves
=
new
ArrayList
<>();
tmsReserve
=
GetOrderInfo
(
liteOrder
);
List
<
TMSReserve
>
tmsReserves
=
new
ArrayList
<>();
tmsReserves
.
add
(
tmsReserve
);
ResponseUpdateDeliveryReserveState
(
requestID
,
tmsReserves
,
0
);
ResponseUpdateDeliveryReserveState
(
requestID
,
tmsReserves
,
0
);
}
}
}
}
catch
(
Exception
exception
)
{
log
.
error
(
"RequestDeliveryOrder error:"
+
exception
.
toString
());
}
ResponseDeliveryOrder
(
requestID
,
new
ArrayList
<>(),
""
);
ResponseDeliveryOrder
(
requestID
,
new
ArrayList
<>(),
""
,
""
);
}
/**
...
...
@@ -998,7 +1019,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
* @param Parts
* @param OrderCode
*/
public
void
ResponseDeliveryOrder
(
int
requestID
,
List
<
TMSPart
>
Parts
,
String
OrderCode
)
{
public
void
ResponseDeliveryOrder
(
int
requestID
,
List
<
TMSPart
>
Parts
,
String
OrderCode
,
String
ReserveCode
)
{
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<>();
dataMap
.
put
(
"Topic"
,
"ResponseDeliveryOrder"
);
dataMap
.
put
(
"RequestID"
,
requestID
);
...
...
@@ -1014,9 +1035,13 @@ public class TMSCommunicator implements WsMsgReceivedListener {
arrayList
.
add
(
Part
.
getJson
());
}
if
(
ObjectUtil
.
isEmpty
(
ReserveCode
)){
ReserveCode
=
OrderCode
;
}
dataMap
.
put
(
"PartList"
,
arrayList
);
dataMap
.
put
(
"OrderCode"
,
OrderCode
);
dataMap
.
put
(
"ReserveCode"
,
Order
Code
);
dataMap
.
put
(
"ReserveCode"
,
Reserve
Code
);
SendData
(
dataMap
);
}
...
...
@@ -1080,6 +1105,8 @@ public class TMSCommunicator implements WsMsgReceivedListener {
for
(
TMSReserve
Reserve
:
ReserveList
)
{
Map
<
String
,
Object
>
dataMap2
=
new
HashMap
<>();
dataMap2
.
put
(
"ReserveCode"
,
Reserve
.
getReserveCode
());
//
dataMap2
.
put
(
"ResultCode"
,
Reserve
.
getResultCode
());
dataMap2
.
put
(
"Date"
,
Reserve
.
getDate
());
List
<
Object
>
jArray2
=
new
ArrayList
<>();
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMS_Code.java
查看文件 @
dcc32d1
...
...
@@ -83,12 +83,12 @@ public class TMS_Code {
public
static
final
String
CODE_2001
=
"2001"
;
/**
* 2002 Out of part
* 2002 Out of part
无材料
*/
public
static
final
String
CODE_2002
=
"2002"
;
/**
* 2003 Registered part but not on the rack
* 2003 Registered part but not on the rack
缺料
*/
public
static
final
String
CODE_2003
=
"2003"
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论