Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit c4bea40f
由
LN
编写于
2024-05-24 08:49:30 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
韩华接口调试修改
1 个父辈
06d99ddb
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
285 行增加
和
103 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/custom/hanwha/client/MyWebSocketClient.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/HanwhaApiHandler.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSApis.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSCommunicator.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/bean/TMSPos.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
c4bea40
...
@@ -427,10 +427,13 @@ public class LiteOrderCache {
...
@@ -427,10 +427,13 @@ public class LiteOrderCache {
boolean
singleOut
=
false
;
boolean
singleOut
=
false
;
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
);
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
);
}
}
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
,
boolean
singleOut
)
{
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
,
false
);
}
/**
/**
* 执行工单出库
* 执行工单出库
*/
*/
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
,
boolean
singleOut
)
{
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
,
boolean
singleOut
,
boolean
needCheck
)
{
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
)
{
if
(
cacheOrder
==
null
)
{
...
@@ -462,6 +465,7 @@ public class LiteOrderCache {
...
@@ -462,6 +465,7 @@ public class LiteOrderCache {
return
checkOutOrder
(
cacheOrder
).
getMsgKey
();
return
checkOutOrder
(
cacheOrder
).
getMsgKey
();
}
}
log
.
info
(
"开始执行工单["
+
orderNo
+
"] outBom="
+
outBom
);
log
.
info
(
"开始执行工单["
+
orderNo
+
"] outBom="
+
outBom
);
cacheOrder
.
setTaskReelCount
(
0
);
cacheOrder
.
setTaskReelCount
(
0
);
cacheOrder
.
setTaskFinishedTime
(-
1
);
cacheOrder
.
setTaskFinishedTime
(-
1
);
...
@@ -474,9 +478,13 @@ public class LiteOrderCache {
...
@@ -474,9 +478,13 @@ public class LiteOrderCache {
//liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
//liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
int
taskReelCount
=
0
;
int
taskReelCount
=
0
;
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
if
(
needCheck
&&(
shortageCheck
(
cacheOrder
,
outBom
)))
{
return
"smfcore.order.out.noTask"
;
}
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
//其他出库模式一次性全部生成任务
//其他出库模式一次性全部生成任务
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
orderItem
.
setOutNum
(
0
);
orderItem
.
setOutNum
(
0
);
...
@@ -570,6 +578,91 @@ public class LiteOrderCache {
...
@@ -570,6 +578,91 @@ public class LiteOrderCache {
}
}
return
""
;
return
""
;
}
}
public
boolean
shortageCheck
(
LiteOrder
cacheOrder
,
boolean
outBom
)
{
String
orderNo
=
cacheOrder
.
getOrderNo
();
boolean
shortReel
=
false
;
try
{
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
log
.
info
(
"工单["
+
orderNo
+
"]出库前需要进行缺料检查"
);
//其他出库模式一次性全部生成任务
List
<
LiteOrderItem
>
newItems
=
new
ArrayList
<>();
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
//剩余未出数量
Float
totalNum
=
orderItem
.
getNeedNum
()
*
cacheOrder
.
getOrderTimes
();
int
remainNum
=
totalNum
.
intValue
()
-
orderItem
.
getTotalOutNum
();
//剩余未出盘数
int
remainReelCount
=
orderItem
.
getNeedReelCount
()
-
orderItem
.
getTotalOutReelCount
();
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
//此PN未完成
if
(
remainNum
>
0
||
remainReelCount
>
0
)
{
if
(
outBom
)
{
//套料出库,设置剩余数量为1,这样就只会出一盘
remainNum
=
1
;
remainReelCount
=
0
;
}
int
assignNum
=
0
;
int
assignReelCount
=
0
;
while
(
assignNum
<
remainNum
||
assignReelCount
<
remainReelCount
)
{
String
partNumber
=
orderItem
.
getPn
();
String
reelId
=
orderItem
.
getRi
();
String
mpn
=
orderItem
.
getMpn
();
StoragePos
pos
=
null
;
if
(!
Strings
.
isNullOrEmpty
(
reelId
))
{
//RI
pos
=
storagePosManager
.
getByBarcode
(
reelId
);
if
(
pos
==
null
)
{
log
.
error
(
"工单["
+
orderNo
+
"]RI出库时,未找到料盘["
+
reelId
+
"],返回缺料"
);
shortReel
=
true
;
orderItem
.
addAppendDate
(
"shortage"
,
"true"
);
liteOrderItemManager
.
save
(
orderItem
);
break
;
}
else
{
excludePosIds
.
add
(
pos
.
getPosName
());
}
break
;
}
else
if
(
Strings
.
isNullOrEmpty
(
reelId
)
&&
!
Strings
.
isNullOrEmpty
(
partNumber
))
{
//PN
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
""
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getAppendData
());
}
else
if
(
Strings
.
isNullOrEmpty
(
reelId
)
&&
Strings
.
isNullOrEmpty
(
partNumber
)
&&
!
Strings
.
isNullOrEmpty
(
mpn
))
{
pos
=
storagePosManager
.
findMpnInStorages
(
availableStorageIds
,
mpn
,
excludePosIds
,
checkoutType
,
orderItem
.
getAppendData
());
}
if
(
pos
==
null
)
{
shortReel
=
true
;
log
.
error
(
"工单["
+
orderNo
+
"]未找到可以出库的物料PN=["
+
partNumber
+
"],返回缺料"
);
orderItem
.
addAppendDate
(
"shortage"
,
"true"
);
liteOrderItemManager
.
save
(
orderItem
);
break
;
}
else
{
assignNum
=
assignNum
+
pos
.
getBarcode
().
getAmount
();
assignReelCount
=
assignReelCount
+
1
;
excludePosIds
.
add
(
pos
.
getPosName
());
}
}
}
newItems
.
add
(
orderItem
);
}
}
catch
(
Exception
ex
)
{
log
.
info
(
"工单["
+
orderNo
+
"]缺料检查出错:"
+
ex
.
toString
());
}
if
(
shortReel
){
cacheOrder
.
setClosed
(
true
);
cacheOrder
.
setStatus
(
LITEORDER_STATUS
.
CLOSED
);
liteOrderManager
.
save
(
cacheOrder
);
liteOrderMap
.
put
(
cacheOrder
.
getOrderNo
(),
cacheOrder
);
log
.
info
(
"工单["
+
orderNo
+
"]缺料,直接关闭工单 "
);
}
return
shortReel
;
}
/**
/**
* 防止仓位任务重复,需要排除掉已经分配掉的出库仓位
* 防止仓位任务重复,需要排除掉已经分配掉的出库仓位
*/
*/
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
查看文件 @
c4bea40
...
@@ -103,6 +103,20 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
...
@@ -103,6 +103,20 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
*/
*/
public
Map
<
String
,
String
>
appendData
=
new
HashMap
<>();
public
Map
<
String
,
String
>
appendData
=
new
HashMap
<>();
public
void
addAppendDate
(
String
key
,
String
value
){
if
(
appendData
==
null
){
appendData
=
new
HashMap
<>();
}
appendData
.
put
(
key
,
value
);
}
public
String
getAppend
(
String
key
)
{
if
(
appendData
!=
null
&&
appendData
.
containsKey
(
key
))
{
return
appendData
.
get
(
key
);
}
return
""
;
}
/**
/**
* 出库是否满足要求,已出库数量大于需求数量
* 出库是否满足要求,已出库数量大于需求数量
*/
*/
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/client/MyWebSocketClient.java
查看文件 @
c4bea40
...
@@ -31,7 +31,7 @@ public class MyWebSocketClient extends WebSocketClient {
...
@@ -31,7 +31,7 @@ public class MyWebSocketClient extends WebSocketClient {
@Override
@Override
public
void
onMessage
(
String
s
)
{
public
void
onMessage
(
String
s
)
{
log
.
info
(
"onMessage: "
+
s
);
//
log.info("onMessage: "+s);
if
(
msgReceivedListener
!=
null
){
if
(
msgReceivedListener
!=
null
){
msgReceivedListener
.
onMsgReceived
(
s
);
msgReceivedListener
.
onMsgReceived
(
s
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/HanwhaApiHandler.java
查看文件 @
c4bea40
...
@@ -11,7 +11,6 @@ import com.neotel.smfcore.core.order.service.po.LiteOrder;
...
@@ -11,7 +11,6 @@ import com.neotel.smfcore.core.order.service.po.LiteOrder;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
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.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.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.core.system.util.DevicesStatusUtil
;
import
com.neotel.smfcore.custom.hanwha.handler.bean.TMSPart
;
import
com.neotel.smfcore.custom.hanwha.handler.bean.TMSPart
;
...
@@ -55,7 +54,6 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
...
@@ -55,7 +54,6 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
@Override
@Override
public
boolean
isForThisApi
(
String
apiName
)
{
public
boolean
isForThisApi
(
String
apiName
)
{
return
apiName
!=
null
&&
apiName
.
equalsIgnoreCase
(
"hanwha"
)
&&
TMSCommunicator
.
isEnable
();
return
apiName
!=
null
&&
apiName
.
equalsIgnoreCase
(
"hanwha"
)
&&
TMSCommunicator
.
isEnable
();
}
}
@Autowired
@Autowired
...
@@ -104,6 +102,10 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
...
@@ -104,6 +102,10 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
if
(
result
.
size
()
>
0
)
{
if
(
result
.
size
()
>
0
)
{
String
pn
=
result
.
get
(
0
).
getPartName
();
String
pn
=
result
.
get
(
0
).
getPartName
();
String
code
=
result
.
get
(
0
).
getReelCode
();
String
code
=
result
.
get
(
0
).
getReelCode
();
// 2024-05-23 14:15:45.749 INFO [TMSApis.java:473] - PostJson, url=[http://192.168.101.96:8082/webservice/RequestGetPartInfo],
// send=[{"data":{"RequestID":0,"ReelCode":"20180710184319-001","Indate":"2024-05-23 14:15:45"}}],
// response=[{"RequestID":0,"Data":[{"PartName":"Z2203061201A","ReelCode":"20180710184319-001","Count":5000}],"error":null}]
boolean
needS
=
false
;
boolean
needS
=
false
;
if
(
ObjectUtil
.
isNotEmpty
(
pn
))
{
if
(
ObjectUtil
.
isNotEmpty
(
pn
))
{
barcode
.
setPartNumber
(
pn
);
barcode
.
setPartNumber
(
pn
);
...
@@ -198,6 +200,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
...
@@ -198,6 +200,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
if
(
storage
==
null
)
{
if
(
storage
==
null
)
{
continue
;
continue
;
}
}
storageIds
.
add
(
storage
.
getId
());
String
type
=
"Storage"
;
String
type
=
"Storage"
;
if
(
storage
.
isNLShelf
()
||
storage
.
isNLPShelf
()
||
storage
.
isNLMShelf
()
||
storage
.
isShelf
())
{
if
(
storage
.
isNLShelf
()
||
storage
.
isNLPShelf
()
||
storage
.
isNLMShelf
()
||
storage
.
isShelf
())
{
type
=
"Rack"
;
type
=
"Rack"
;
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSApis.java
查看文件 @
c4bea40
...
@@ -4,7 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
...
@@ -4,7 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.custom.hanwha.handler.bean.*
;
import
com.neotel.smfcore.custom.hanwha.handler.bean.*
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -33,7 +33,8 @@ public class TMSApis {
...
@@ -33,7 +33,8 @@ public class TMSApis {
Map
<
String
,
Object
>
sendData
=
new
HashMap
<>();
Map
<
String
,
Object
>
sendData
=
new
HashMap
<>();
sendData
.
put
(
"data"
,
dataMap
);
sendData
.
put
(
"data"
,
dataMap
);
String
responseStr
=
PostJson
(
url
,
sendData
);
String
responseStr
=
PostJson
(
url
,
sendData
);
if
(!
ObjectUtil
.
isNotEmpty
(
responseStr
))
{
if
(
ObjectUtil
.
isNotEmpty
(
responseStr
))
{
// {"RequestID":0,"Data":[{"PartName":"Z2203061201A","ReelCode":"20180710184319-001","Count":5000}],"error":null}
Map
<
String
,
Object
>
dataMap2
=
JsonUtil
.
toMap
(
responseStr
);
Map
<
String
,
Object
>
dataMap2
=
JsonUtil
.
toMap
(
responseStr
);
List
<
Object
>
jArray
=
(
List
<
Object
>)
dataMap2
.
get
(
"Data"
);
List
<
Object
>
jArray
=
(
List
<
Object
>)
dataMap2
.
get
(
"Data"
);
...
@@ -142,7 +143,7 @@ public class TMSApis {
...
@@ -142,7 +143,7 @@ public class TMSApis {
Map
<
String
,
Object
>
sendData
=
new
HashMap
<>();
Map
<
String
,
Object
>
sendData
=
new
HashMap
<>();
sendData
.
put
(
"data"
,
dataMap
);
sendData
.
put
(
"data"
,
dataMap
);
String
responseStr
=
PostJson
(
url
,
sendData
);
String
responseStr
=
PostJson
(
url
,
sendData
);
if
(
!
ObjectUtil
.
isNotEmpty
(
responseStr
))
{
if
(
ObjectUtil
.
isNotEmpty
(
responseStr
))
{
List
<
Object
>
resList
=
JsonUtil
.
toList
(
responseStr
,
Object
.
class
);
List
<
Object
>
resList
=
JsonUtil
.
toList
(
responseStr
,
Object
.
class
);
for
(
Object
obj
:
resList
)
{
for
(
Object
obj
:
resList
)
{
Map
<
String
,
Object
>
map
=
JsonUtil
.
toMap
(
JsonUtil
.
toJsonStr
(
obj
));
Map
<
String
,
Object
>
map
=
JsonUtil
.
toMap
(
JsonUtil
.
toJsonStr
(
obj
));
...
@@ -473,4 +474,5 @@ public class TMSApis {
...
@@ -473,4 +474,5 @@ public class TMSApis {
log
.
info
(
"PostJson, url=["
+
url
+
"],send=["
+
JsonUtil
.
toJsonStr
(
sendData
)+
"],response=["
+
responseStr
+
"]"
);
log
.
info
(
"PostJson, url=["
+
url
+
"],send=["
+
JsonUtil
.
toJsonStr
(
sendData
)+
"],response=["
+
responseStr
+
"]"
);
return
responseStr
;
return
responseStr
;
}
}
}
}
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSCommunicator.java
查看文件 @
c4bea40
...
@@ -71,9 +71,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -71,9 +71,6 @@ public class TMSCommunicator implements WsMsgReceivedListener {
TMSCommunicator
.
configApiPort
=
configPort
;
TMSCommunicator
.
configApiPort
=
configPort
;
}
}
@Autowired
private
TMSApis
apis
;
@Autowired
@Autowired
private
DataCache
dataCache
;
private
DataCache
dataCache
;
...
@@ -212,11 +209,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -212,11 +209,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
SendData
(
map
);
SendData
(
map
);
}
}
/**
//
/**
* 权限验证API列表
//
* 权限验证API列表
*/
//
*/
@Autowired
//
@Autowired
private
SmfApi
smfApi
;
//
private SmfApi smfApi;
@Autowired
@Autowired
private
TMSApis
tmsApis
;
private
TMSApis
tmsApis
;
...
@@ -231,6 +228,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -231,6 +228,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
SyncReelData
(
allUsedPoss
);
SyncReelData
(
allUsedPoss
);
SyncDeliveryReserveState
(
);
SyncDeliveryReserveState
(
);
// List<TMSPart> result= tmsApis.RequestGetPartInfo(0,"20180126153040-001");
// List<TMSPart> result= tmsApis.RequestGetPartInfo(0,"20180126153040-001");
// onMsgReceived("{\"PartNames\":[\"Z2203021401A\",\"20180711092420-002\",\"20180710181845-001\"],\"Counts\":[5000,1,1],\"TowerLamp\":false,\"Topic\":\"RequestDeliveryOrder\",\"id\":2,\"uid\":439570}");
// onMsgReceived("{\"PartNames\":[\"Z2203021401A\",\"20180711092420-002\",\"20180710181845-001\"],\"Counts\":[5000,1,1],\"TowerLamp\":false,\"Topic\":\"RequestDeliveryOrder\",\"id\":1,\"uid\":472393}");
}
}
});
});
...
@@ -243,33 +243,63 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -243,33 +243,63 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
}
log
.
info
(
"WebSocket 已连接,开始同步物料信息 RequestSyncPartReelPosInfo"
);
log
.
info
(
"WebSocket 已连接,开始同步物料信息 RequestSyncPartReelPosInfo"
);
List
<
TMSPartReelPos
>
list
=
new
ArrayList
<>();
// for (Map<String, StoragePos> map : allUsedPosList) {
for
(
Map
<
String
,
StoragePos
>
map
:
allUsedPosList
)
{
//
// for (StoragePos pos :
// map.values()) {
// if (pos.getBarcode() == null) {
// continue;
// }
// Storage storage = dataCache.getStorageById(pos.getStorageId());
// if (storage == null) {
// log.error("posName[" + pos.getPosName() + "],storageId[" + pos.getStorageId() + "]未找到料仓");
// continue;
// }
// 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);
//// if(list.size()>=10){
//// break;
//// }
// }
// }
Map
<
String
,
Storage
>
allStorage
=
dataCache
.
getAllStorage
();
for
(
Storage
storage
:
allStorage
.
values
())
{
List
<
TMSPartReelPos
>
list
=
new
ArrayList
<>();
List
<
StoragePos
>
allPos
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
if
(
storage
.
isNLShelf
()
)
{
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
);
}
for
(
StoragePos
pos
:
// if(list.size()>=10){
map
.
values
())
{
// break;
if
(
pos
.
getBarcode
()
==
null
)
{
// }
continue
;
}
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
==
null
){
log
.
error
(
"posName["
+
pos
.
getPosName
()+
"],storageId["
+
pos
.
getStorageId
()+
"]未找到料仓"
);
continue
;
}
}
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
);
if
(
list
.
size
()>=
10
){
log
.
info
(
"RequestSyncPartReelPosInfo storageCID="
+
storage
.
getCid
()+
", count="
+
list
.
size
());
break
;
}
}
}
}
}
List
<
TMSPart
>
result
=
tmsApis
.
RequestSyncPartReelPosInfo
(
0
,
list
);
}
}
public
void
SyncStorageConnectionInfo
(
String
[]
cids
,
Integer
[]
statusList
)
{
public
void
SyncStorageConnectionInfo
(
String
[]
cids
,
Integer
[]
statusList
)
{
if
(!
TMSCommunicator
.
isEnable
())
{
if
(!
TMSCommunicator
.
isEnable
())
{
...
@@ -303,21 +333,24 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -303,21 +333,24 @@ public class TMSCommunicator implements WsMsgReceivedListener {
status
=
bean
.
getStatus
();
status
=
bean
.
getStatus
();
}
}
}
}
String
conCode
=
TMS_Code
.
CODE_1020
;
String
conCode
=
"0"
;
if
(
status
<=
0
)
{
// if (status <= 0) {
//初始化失败
// //初始化失败
conCode
=
TMS_Code
.
CODE_0002
;
// conCode = TMS_Code.CODE_0002;
}
else
if
(
status
==
1
)
{
// } else if (status == 1) {
conCode
=
TMS_Code
.
CODE_1020
;
// conCode = TMS_Code.CODE_1020;
}
else
if
(
status
<=
4
)
{
// } else if (status <= 4) {
//报警
// //报警
conCode
=
TMS_Code
.
CODE_1024
;
// conCode = TMS_Code.CODE_1024;
}
else
if
(
status
==
5
)
{
// } else if (status == 5) {
conCode
=
TMS_Code
.
CODE_1023
;
// conCode = TMS_Code.CODE_1023;
}
else
{
// } else {
//忙碌
// //忙碌
conCode
=
TMS_Code
.
CODE_1010
;
// conCode = TMS_Code.CODE_1010;
// }
if
(
status
>=
1
){
conCode
=
"2"
;
}
}
storageIds
.
add
(
storage
.
getCid
());
storageIds
.
add
(
storage
.
getCid
());
storageTypes
.
add
(
type
);
storageTypes
.
add
(
type
);
...
@@ -366,24 +399,32 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -366,24 +399,32 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//查找工单的所有任务
//查找工单的所有任务
Criteria
c
=
Criteria
.
where
(
"sourceName"
).
is
(
liteOrder
.
getOrderNo
()).
and
(
"type"
).
is
(
2
);
Criteria
c
=
Criteria
.
where
(
"sourceName"
).
is
(
liteOrder
.
getOrderNo
()).
and
(
"type"
).
is
(
2
);
List
<
DataLog
>
dataLogs
=
dataLogManager
.
findByQuery
(
new
Query
(
c
));
List
<
DataLog
>
dataLogs
=
dataLogManager
.
findByQuery
(
new
Query
(
c
));
for
(
DataLog
task
:
dataLogs
)
{
//是工单出库任务
if
(
task
.
isCheckOutTask
()
&&
task
.
getSourceName
().
equals
(
liteOrder
.
getOrderNo
()))
{
String
logCode
=
TMS_Code
.
CODE_2013
;
//默认已完成
for
(
DataLog
task
:
if
(
task
.
isCancel
())
{
dataLogs
)
{
logCode
=
TMS_Code
.
CODE_2012
;
//取消成功
// if(ObjectUtil.isNotEmpty(item.getPn())&&task.getPartNumber().equals(task.getPartNumber())){
}
else
if
(
task
.
isExecuting
()
||
task
.
isWait
())
{
//
// }else if(ObjectUtil.isNotEmpty(item.getRi())&&task.getBarcode().equals(task.getBarcode())){
logCode
=
TMS_Code
.
CODE_2011
;
//出库中
//
}
else
{
// }else{
logCode
=
TMS_Code
.
CODE_2013
;
//已完成
// continue;
// }
//是工单出库任务
if
(
task
.
isCheckOutTask
()
&&
task
.
getSourceName
().
equals
(
liteOrder
.
getOrderNo
()))
{
String
logCode
=
TMS_Code
.
CODE_2013
;
//默认已完成
if
(
task
.
isCancel
())
{
logCode
=
TMS_Code
.
CODE_2012
;
//取消成功
}
else
if
(
task
.
isExecuting
()
||
task
.
isWait
())
{
logCode
=
TMS_Code
.
CODE_2011
;
//出库中
}
else
{
logCode
=
TMS_Code
.
CODE_2013
;
//已完成
}
TMSPart
part
=
TMSPart
.
newBean
(
task
.
getPartNumber
(),
task
.
getBarcode
(),
task
.
getNum
(),
task
.
getNum
(),
logCode
,
task
.
getCid
(),
task
.
getPosName
());
tmsParts
.
add
(
part
);
}
}
TMSPart
part
=
TMSPart
.
newBean
(
task
.
getPartNumber
(),
task
.
getBarcode
(),
task
.
getNum
(),
task
.
getNum
(),
logCode
,
task
.
getCid
(),
task
.
getPosName
());
tmsParts
.
add
(
part
);
}
}
}
if
(
liteOrder
.
isClosed
())
{
if
(
liteOrder
.
isClosed
())
{
if
(
tmsParts
.
size
()
>
0
)
{
if
(
tmsParts
.
size
()
>
0
)
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2013
);
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2013
);
...
@@ -428,7 +469,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -428,7 +469,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
String
reelCode
;
String
reelCode
;
int
count
;
int
count
;
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],
message:["
+
message
+
"],Topic=["
+
topic
+
"]
"
);
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],
Topic=["
+
topic
+
"],message:["
+
message
+
"],
"
);
switch
(
topic
)
{
switch
(
topic
)
{
case
"RequestDeliveryOrder"
:
case
"RequestDeliveryOrder"
:
...
@@ -501,8 +542,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -501,8 +542,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
case
"NotifyLog"
:
case
"NotifyLog"
:
break
;
break
;
default
:
default
:
// log.error("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"],requestID=["+requestID+"],message:["+message+"]");
log
.
error
(
"onMsgReceived:未找到对应的TOPIC: Topic=["
+
topic
+
"],requestID=["
+
requestID
+
"],message:["
+
message
+
"]
"
);
// log.error("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"]
");
return
;
return
;
}
}
}
}
...
@@ -546,7 +588,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -546,7 +588,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
if
(
autoOut
)
{
if
(
autoOut
)
{
try
{
try
{
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
);
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
,
false
,
true
);
liteOrder
=
liteOrderCache
.
getLiteOrder
(
liteOrder
.
getOrderNo
());
liteOrder
=
liteOrderCache
.
getLiteOrder
(
liteOrder
.
getOrderNo
());
}
catch
(
ValidateException
ex
)
{
}
catch
(
ValidateException
ex
)
{
log
.
error
(
"RequestDelivery 自动执行工单["
+
liteOrder
.
getOrderNo
()
+
"] error:"
+
ex
.
toString
());
log
.
error
(
"RequestDelivery 自动执行工单["
+
liteOrder
.
getOrderNo
()
+
"] error:"
+
ex
.
toString
());
...
@@ -589,6 +631,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -589,6 +631,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
}
LiteOrder
liteOrder
=
createOrder
(
requestID
,
liteOrderItems
,
soName
,
true
);
LiteOrder
liteOrder
=
createOrder
(
requestID
,
liteOrderItems
,
soName
,
true
);
//能够出库成功返回2010,库存不足范围2002 Out Of Part
liteOrder
=
liteOrderCache
.
getLiteOrder
(
liteOrder
.
getOrderNo
());
liteOrder
=
liteOrderCache
.
getLiteOrder
(
liteOrder
.
getOrderNo
());
if
(
liteOrder
!=
null
)
{
if
(
liteOrder
!=
null
)
{
List
<
DataLog
>
dataLogs
=
taskService
.
getAllTasks
();
List
<
DataLog
>
dataLogs
=
taskService
.
getAllTasks
();
...
@@ -613,19 +656,36 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -613,19 +656,36 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
}
if
(
curroNum
<=
0
)
{
if
(
curroNum
<=
0
)
{
//未出库
TMSPart
p
=
TMSPart
.
newBean
(
item
.
getPn
(),
""
,
item
.
getNeedNum
(),
item
.
getOutNum
(),
TMS_Code
.
CODE_2019
,
""
,
""
);
//如果缺料返回2002,否则还是返回2010
log
.
info
(
"RequestDeliveryOrder pn="
+
item
.
getPn
()+
",出库失败:code="
+
TMS_Code
.
CODE_2019
);
String
shortValue
=
item
.
getAppend
(
"shortage"
);
parts
.
add
(
p
);
if
(
ObjectUtil
.
isNotEmpty
(
shortValue
)&&
shortValue
.
equals
(
"true"
)){
//未出库
TMSPart
p
=
TMSPart
.
newBean
(
item
.
getPn
(),
""
,
item
.
getNeedNum
(),
item
.
getOutNum
(),
TMS_Code
.
CODE_2002
,
""
,
""
);
log
.
info
(
"RequestDeliveryOrder pn="
+
item
.
getPn
()+
",出库失败缺料:code="
+
TMS_Code
.
CODE_2002
);
parts
.
add
(
p
);
}
else
{
TMSPart
p
=
TMSPart
.
newBean
(
item
.
getPn
(),
""
,
item
.
getNeedNum
(),
item
.
getOutNum
(),
TMS_Code
.
CODE_2010
,
""
,
""
);
log
.
info
(
"RequestDeliveryOrder pn="
+
item
.
getPn
()+
",未出库成功:code="
+
TMS_Code
.
CODE_2010
);
parts
.
add
(
p
);
}
}
}
}
}
ResponseDeliveryOrder
(
requestID
,
parts
,
liteOrder
.
getOrderNo
());
ResponseDeliveryOrder
(
requestID
,
parts
,
liteOrder
.
getOrderNo
());
tmsReserve
=
GetOrderInfo
(
liteOrder
);
List
<
TMSReserve
>
tmsReserves
=
new
ArrayList
<>();
//如果工单执行中,发送ResponseUpdateDeliveryReserveState,否则不需要
tmsReserves
.
add
(
tmsReserve
);
if
(
liteOrder
.
isClosed
()){
ResponseUpdateDeliveryReserveState
(
requestID
,
tmsReserves
,
0
);
log
.
info
(
"RequestDeliveryOrder 工单已关闭,不需要发送 发送ResponseUpdateDeliveryReserveState"
);
}
else
{
tmsReserve
=
GetOrderInfo
(
liteOrder
);
List
<
TMSReserve
>
tmsReserves
=
new
ArrayList
<>();
tmsReserves
.
add
(
tmsReserve
);
ResponseUpdateDeliveryReserveState
(
requestID
,
tmsReserves
,
0
);
}
}
}
...
@@ -661,16 +721,16 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -661,16 +721,16 @@ public class TMSCommunicator implements WsMsgReceivedListener {
String
posName
=
tmsPos
.
getPosName
();
String
posName
=
tmsPos
.
getPosName
();
if
(
storage
==
null
||
ObjectUtil
.
isEmpty
(
posName
))
{
if
(
storage
==
null
||
ObjectUtil
.
isEmpty
(
posName
))
{
posResultMap
.
put
(
""
,
TMS_Code
.
CODE_20
19
);
posResultMap
.
put
(
""
,
TMS_Code
.
CODE_20
02
);
continue
;
continue
;
}
}
StoragePos
pos
=
storagePosManager
.
getByPosName
(
posName
);
StoragePos
pos
=
storagePosManager
.
getByPosName
(
posName
);
if
(
pos
==
null
)
{
if
(
pos
==
null
)
{
log
.
info
(
"RequestDeliveryOrderByLocation : cid="
+
cid
+
", pos="
+
posName
+
",未找到库位号,出库结果:code="
+
TMS_Code
.
CODE_20
19
);
log
.
info
(
"RequestDeliveryOrderByLocation : cid="
+
cid
+
", pos="
+
posName
+
",未找到库位号,出库结果:code="
+
TMS_Code
.
CODE_20
02
);
posResultMap
.
put
(
posName
,
TMS_Code
.
CODE_20
19
);
posResultMap
.
put
(
posName
,
TMS_Code
.
CODE_20
02
);
}
else
if
(
pos
.
getBarcode
()
==
null
)
{
}
else
if
(
pos
.
getBarcode
()
==
null
)
{
log
.
info
(
"RequestDeliveryOrderByLocation : cid="
+
cid
+
", pos="
+
posName
+
",库位为空,出库失败,结果:code="
+
TMS_Code
.
CODE_20
19
);
log
.
info
(
"RequestDeliveryOrderByLocation : cid="
+
cid
+
", pos="
+
posName
+
",库位为空,出库失败,结果:code="
+
TMS_Code
.
CODE_20
02
);
posResultMap
.
put
(
posName
,
TMS_Code
.
CODE_20
41
);
posResultMap
.
put
(
posName
,
TMS_Code
.
CODE_20
02
);
}
else
{
}
else
{
posResultMap
.
put
(
posName
,
TMS_Code
.
CODE_1011
);
//默认是开始送货时失败
posResultMap
.
put
(
posName
,
TMS_Code
.
CODE_1011
);
//默认是开始送货时失败
...
@@ -974,7 +1034,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
...
@@ -974,7 +1034,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
for
(
TMSReserve
Reserve
:
ReserveList
)
{
for
(
TMSReserve
Reserve
:
ReserveList
)
{
Map
<
String
,
Object
>
dataMap2
=
new
HashMap
<>();
Map
<
String
,
Object
>
dataMap2
=
new
HashMap
<>();
dataMap2
.
put
(
"ReserveCode"
,
Reserve
.
getReserveCode
());
dataMap2
.
put
(
"ReserveCode"
,
Reserve
.
getReserveCode
());
dataMap2
.
put
(
"ResultCode"
,
Reserve
.
getRes
erve
Code
());
dataMap2
.
put
(
"ResultCode"
,
Reserve
.
getRes
ult
Code
());
dataMap2
.
put
(
"Date"
,
Reserve
.
getDate
());
dataMap2
.
put
(
"Date"
,
Reserve
.
getDate
());
List
<
Object
>
jArray2
=
new
ArrayList
<>();
List
<
Object
>
jArray2
=
new
ArrayList
<>();
for
(
TMSPart
part
:
Reserve
.
getPartList
())
{
for
(
TMSPart
part
:
Reserve
.
getPartList
())
{
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/bean/TMSPos.java
查看文件 @
c4bea40
package
com
.
neotel
.
smfcore
.
custom
.
hanwha
.
handler
.
bean
;
package
com
.
neotel
.
smfcore
.
custom
.
hanwha
.
handler
.
bean
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -44,39 +45,48 @@ public class TMSPos implements Serializable {
...
@@ -44,39 +45,48 @@ public class TMSPos implements Serializable {
// setRowID(posName.substring(0,index-1));
// setRowID(posName.substring(0,index-1));
// setColID(posName.substring(index+1,posName.length()-1));
// setColID(posName.substring(index+1,posName.length()-1));
// }
// }
String
rowId
=
proStr
(
posName
);
String
colId
=
""
;
String
spit
=
"_"
;
String
spit
=
"_"
;
String
[]
posArray
=
posName
.
split
(
spit
);
String
[]
posArray
=
posName
.
split
(
spit
);
if
(
posArray
.
length
>=
2
)
{
if
(
posArray
.
length
>=
3
)
{
}
else
{
}
else
{
spit
=
"-"
;
spit
=
"-"
;
posArray
=
posName
.
split
(
spit
);
}
}
try
{
try
{
String
rowId
=
proStr
(
posName
)
;
if
(
posArray
.
length
==
3
)
{
String
colId
=
""
;
rowId
=
Convert
.
toInt
(
posArray
[
1
])
+
""
;
int
index
=
posName
.
lastIndexOf
(
spit
);
colId
=
Convert
.
toInt
(
posArray
[
2
])
+
""
;
if
(
index
>
0
)
{
rowId
=
posName
.
substring
(
0
,
index
);
colId
=
posName
.
substring
(
index
+
1
,
posName
.
length
());
}
else
{
String
nPosName
=
proStr
(
posName
);
if
(
nPosName
.
length
()>
2
){
index
=
posName
.
length
()
-
2
;
rowId
=
posName
.
substring
(
0
,
index
);
colId
=
posName
.
substring
(
index
,
posName
.
length
());
}
}
}
setRowID
(
proStr
(
rowId
));
}
catch
(
Exception
ex
)
{
setColID
(
proStr
(
colId
));
log
.
error
(
"解析出错:"
+
ex
.
toString
());
try
{
int
index
=
posName
.
lastIndexOf
(
spit
);
if
(
index
>
0
)
{
rowId
=
posName
.
substring
(
0
,
index
);
colId
=
posName
.
substring
(
index
+
1
,
posName
.
length
());
}
else
{
String
nPosName
=
proStr
(
posName
);
if
(
nPosName
.
length
()
>
2
)
{
index
=
posName
.
length
()
-
2
;
rowId
=
posName
.
substring
(
0
,
index
);
colId
=
posName
.
substring
(
index
,
posName
.
length
());
}
}
// setColID(posArray[posArray.length - 1]);
// setColID(posArray[posArray.length - 1]);
// setRowID(posArray[posArray.length - 2]);
// setRowID(posArray[posArray.length - 2]);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex2
)
{
log
.
error
(
"解析位置的行列失败 "
+
posName
+
","
+
ex
.
toString
());
log
.
error
(
"解析位置的行列失败 "
+
posName
+
","
+
ex2
.
toString
());
}
}
}
setRowID
(
proStr
(
rowId
));
setColID
(
proStr
(
colId
));
}
}
private
String
proStr
(
String
input
)
{
private
String
proStr
(
String
input
)
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论