Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit f89c27d4
由
hjh
编写于
2024-08-22 15:43:56 +0800
浏览文件
选项
浏览文件
标签
下载
差异文件
Merge remote-tracking branch 'origin/master'
2 个父辈
d6f0806e
6a7ed1d0
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
280 行增加
和
117 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/MimoG3BoxHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/equipment/util/EquipmentCache.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/service/po/Storage.java
src/main/java/com/neotel/smfcore/core/system/util/DevicesStatusUtil.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/TMS_Code.java
src/main/java/com/neotel/smfcore/custom/hanwha/handler/bean/TMSPart.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
f89c27d
...
...
@@ -919,6 +919,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
needSaveToMongo
=
statusBean
.
needSaveToMongo
();
}
statusBean
.
setTime
(
System
.
currentTimeMillis
());
statusBean
.
setOfflineTime
(-
1
);
Map
<
String
,
BoxStatusBean
>
statusOfBoxes
=
statusBeanToSave
.
getBoxStatus
();
statusBean
.
setBoxStatus
(
statusOfBoxes
);
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/MimoG3BoxHandler.java
查看文件 @
f89c27d
...
...
@@ -167,6 +167,6 @@ public class MimoG3BoxHandler extends BaseDeviceHandler{
@Override
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
SMD_MIMO_G
2
;
return
DeviceType
.
SMD_MIMO_G
3
;
}
}
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLShelfHandler.java
查看文件 @
f89c27d
...
...
@@ -335,13 +335,18 @@ public class NLShelfHandler extends BaseDeviceHandler {
return
ResultBean
.
newOkResult
(
"smfcore.shelf.msg.tipScanReel"
,
"库位["
+
pos
.
getPosName
()
+
"]操作成功,请扫描要放入的物料"
,
new
String
[]{
pos
.
getPosName
()},
pos
.
getPosName
());
}
}
else
{
//先判断库存中有没有此条码
ResultBean
resultBean
=
outProcess
(
storageId
,
code
,
sourceId
,
loginUser
,
request
);
if
(
resultBean
!=
null
){
return
resultBean
;
ResultBean
resultBean
;
try
{
//先判断库存中有没有此条码
resultBean
=
outProcess
(
storageId
,
code
,
sourceId
,
loginUser
,
request
);
if
(
resultBean
!=
null
)
{
return
resultBean
;
}
}
catch
(
Exception
exa
)
{
log
.
error
(
exa
.
toString
());
}
resultBean
=
putInProcess
(
groupId
,
storageId
,
code
,
token
,
loginUser
);
if
(
resultBean
!=
null
)
{
if
(
resultBean
!=
null
)
{
return
resultBean
;
}
}
...
...
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
f89c27d
...
...
@@ -23,6 +23,8 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.enums.COMPATIBLE_TYPE
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.rest.dto.InventoryItemDto
;
import
com.neotel.smfcore.core.storage.rest.query.InventoryQueryCriteria
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.bean.OrderSetting
;
import
com.neotel.smfcore.core.system.service.dao.ICacheItemDao
;
...
...
@@ -38,6 +40,7 @@ import org.apache.logging.log4j.LogManager;
import
org.apache.logging.log4j.Logger
;
import
org.apache.poi.ss.formula.functions.T
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
...
...
@@ -47,6 +50,7 @@ import javax.annotation.PostConstruct;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
/**
* 缓存
...
...
@@ -658,6 +662,20 @@ public class DataCache {
return
storageInventoryMap
;
}
public
List
<
InventoryItem
>
getInventoryByPN
(
String
pn
)
{
Map
<
String
,
InventoryItem
>
inventoryItemMap
=
getAllInventory
(
null
,
""
);
List
<
InventoryItem
>
list
=
Lists
.
newArrayList
(
inventoryItemMap
.
values
());
List
<
InventoryItem
>
resultList
=
new
ArrayList
<>();
for
(
InventoryItem
item
:
list
)
{
if
(
item
.
getPartNumber
().
equals
(
pn
)&&
item
.
getStockCount
()>
0
)
{
resultList
.
add
(
item
);
}
}
return
resultList
;
}
/**
* 手动修改数量的时候更新库存
* @param cid
...
...
src/main/java/com/neotel/smfcore/core/equipment/util/EquipmentCache.java
查看文件 @
f89c27d
...
...
@@ -36,7 +36,9 @@ public class EquipmentCache {
map
.
put
(
equipment
.
getCid
(),
equipment
);
}
allEquipment
=
map
;
log
.
info
(
"加载所有设备["
+
all
.
size
()+
"]信息到缓存"
);
if
(
all
.
size
()>
0
)
{
log
.
info
(
"加载所有设备["
+
all
.
size
()
+
"]信息到缓存"
);
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
f89c27d
...
...
@@ -600,8 +600,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
)
{
...
...
@@ -612,6 +611,8 @@ public class LiteOrderCache {
int
assignNum
=
0
;
int
assignReelCount
=
0
;
while
(
assignNum
<
remainNum
||
assignReelCount
<
remainReelCount
)
{
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
excludePosIds
.
addAll
(
findPosIds
);
String
partNumber
=
orderItem
.
getPn
();
String
reelId
=
orderItem
.
getRi
();
String
mpn
=
orderItem
.
getMpn
();
...
...
src/main/java/com/neotel/smfcore/core/storage/service/po/Storage.java
查看文件 @
f89c27d
...
...
@@ -102,7 +102,8 @@ public class Storage extends BasePo implements Serializable {
* @return
*/
public
boolean
isMimoG2
(){
return
DeviceType
.
SMD_MIMO_G2
.
name
().
equals
(
type
);
//MIMOG2和G3统一处理
return
(
DeviceType
.
SMD_MIMO_G2
.
name
().
equals
(
type
))||(
DeviceType
.
SMD_MIMO_G3
.
name
().
equals
(
type
));
}
/**
* 是否是单台自动仓
...
...
src/main/java/com/neotel/smfcore/core/system/util/DevicesStatusUtil.java
查看文件 @
f89c27d
...
...
@@ -204,6 +204,7 @@ public class DevicesStatusUtil {
StatusBean
statusBean
=
new
StatusBean
();
statusBean
.
setCid
(
cid
);
statusBean
.
setTime
(
System
.
currentTimeMillis
());
statusBean
.
setOfflineTime
(-
1
);
statusBean
.
setMsgList
(
msgs
);
clientMsgs
.
put
(
cid
,
statusBean
);
return
statusBean
;
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/client/MyWebSocketClient.java
查看文件 @
f89c27d
...
...
@@ -12,16 +12,17 @@ import java.util.TimerTask;
@Slf4j
public
class
MyWebSocketClient
extends
WebSocketClient
{
private
String
url
=
""
;
private
WsMsgReceivedListener
msgReceivedListener
;
// 消息接收监听器
public
MyWebSocketClient
(
URI
serverUri
,
WsMsgReceivedListener
listener
)
{
super
(
serverUri
);
url
=
serverUri
.
toString
();
this
.
msgReceivedListener
=
listener
;
}
@Override
public
void
onOpen
(
ServerHandshake
serverHandshake
)
{
log
.
info
(
"onOpen "
);
log
.
info
((
new
Date
().
toString
())
+
"connect webSServer ok "
);
log
.
info
(
url
+
":"
+(
new
Date
().
toString
())
+
"connect webSServer ok "
);
cancelReconnect
();
if
(
msgReceivedListener
!=
null
)
{
msgReceivedListener
.
onOpen
();
...
...
@@ -41,20 +42,20 @@ public class MyWebSocketClient extends WebSocketClient {
@Override
public
void
onClose
(
int
i
,
String
s
,
boolean
b
)
{
log
.
info
(
"onClose: code:{} reason:{} {}"
,
i
,
s
,
b
);
log
.
info
(
url
+
":"
+
"onClose: code:{} reason:{} {}"
,
i
,
s
,
b
);
startReconnect
();
}
@Override
public
void
onError
(
Exception
e
)
{
log
.
error
(
"web socket client onerror :"
+
e
.
toString
());
log
.
error
(
url
+
":"
+
"web socket client onerror :"
+
e
.
toString
());
//关闭后重新连接
try
{
close
();
}
catch
(
Exception
ex
){
log
.
error
(
"web socket client onerror close error:"
+
e
.
toString
());
log
.
error
(
url
+
":"
+
"web socket client onerror close error:"
+
e
.
toString
());
}
startReconnect
();
}
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/HanwhaApiHandler.java
查看文件 @
f89c27d
...
...
@@ -2,10 +2,15 @@ package com.neotel.smfcore.custom.hanwha.handler;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.core.api.bean.CodeValidateParam
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
import
com.neotel.smfcore.core.barcode.bean.BarcodeRule
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
...
...
@@ -51,6 +56,9 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
@Autowired
private
TMSCommunicator
tmsCommunicator
;
@Autowired
private
IComponentManager
componentManager
;
@Override
public
boolean
isForThisApi
(
String
apiName
)
{
return
apiName
!=
null
&&
apiName
.
equalsIgnoreCase
(
"hanwha"
)
&&
TMSCommunicator
.
isEnable
();
...
...
@@ -61,8 +69,14 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
@Override
public
Barcode
canPutInBeforeResolve
(
String
codeResolveUrl
,
CodeValidateParam
params
)
throws
ValidateException
{
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码,调用 RequestGetPartInfo"
);
List
<
TMSPart
>
result
=
tmsApis
.
RequestGetPartInfo
(
0
,
params
.
getCode
());
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码"
);
CodeBean
codeBean
=
BarcodeRule
.
splitCodeAndSize
(
params
.
getCode
());
String
fullCode
=
codeBean
.
getCodeStr
();
if
(
fullCode
.
endsWith
(
"##"
))
{
fullCode
=
fullCode
.
substring
(
0
,
fullCode
.
length
()
-
2
);
}
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] 解析条码到完整条码:"
+
fullCode
+
",调用 RequestGetPartInfo"
);
List
<
TMSPart
>
result
=
tmsApis
.
RequestGetPartInfo
(
0
,
fullCode
);
if
(
result
.
size
()
>
0
)
{
String
pn
=
result
.
get
(
0
).
getPartName
();
String
code
=
result
.
get
(
0
).
getReelCode
();
...
...
@@ -81,13 +95,44 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
}
int
width
=
7
;
int
height
=
8
;
Barcode
barcode
=
new
Barcode
();
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
code
);
if
(
barcode
==
null
)
{
barcode
=
new
Barcode
();
}
barcode
.
setFullCode
(
params
.
getCode
());
barcode
.
setAmount
(
count
);
barcode
.
setPartNumber
(
pn
);
barcode
.
setBarcode
(
code
);
barcode
.
setHeight
(
height
);
barcode
.
setPlateSize
(
width
);
Date
proDate
=
getDate
(
result
.
get
(
0
).
getProductionDate
());
if
(
proDate
!=
null
)
{
barcode
.
setProduceDate
(
proDate
);
}
Date
expDate
=
getDate
(
result
.
get
(
0
).
getExpiryDate
());
if
(
expDate
!=
null
)
{
barcode
.
setExpireDate
(
expDate
);
}
//判断Pn是否存在
Component
component
=
componentManager
.
findOneByPN
(
pn
);
if
(
component
!=
null
)
{
log
.
info
(
"未找到PN["
+
pn
+
"] 新建一个"
);
//找到了,复制一个
Component
newComponent
=
new
Component
();
newComponent
.
setProvider
(
""
);
newComponent
.
setPlateSize
(
width
);
newComponent
.
setHeight
(
height
);
newComponent
.
setPartNumber
(
component
.
getPartNumber
());
newComponent
.
setAmount
(
count
);
newComponent
.
setName
(
component
.
getPartNumber
());
component
=
componentManager
.
save
(
component
);
}
barcode
=
barcodeManager
.
saveBarcode
(
barcode
);
log
.
info
(
"barcode["
+
params
.
getCode
()
+
"] RequestGetPartInfo ,PN=["
+
pn
+
"],code=["
+
code
+
"],count=["
+
count
+
"]新增条码准备入库"
);
return
barcode
;
...
...
@@ -95,36 +140,46 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
return
null
;
}
private
Date
getDate
(
String
str
)
{
try
{
if
(
ObjectUtil
.
isNotEmpty
(
str
))
{
return
DateUtil
.
toDate
(
str
,
"yyyy-MM-dd HH:mm:ss"
);
}
}
catch
(
Exception
ex
)
{
}
return
null
;
}
@Override
public
Barcode
canPutInAfterResolve
(
String
inCheckUrl
,
CodeValidateParam
params
,
Barcode
barcode
)
throws
ValidateException
{
log
.
info
(
"barcode["
+
barcode
.
getBarcode
()
+
"] 准备入库,调用 RequestGetPartInfo"
);
List
<
TMSPart
>
result
=
tmsApis
.
RequestGetPartInfo
(
0
,
barcode
.
getFullCode
());
if
(
result
.
size
()
>
0
)
{
String
pn
=
result
.
get
(
0
).
getPartName
();
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
;
if
(
ObjectUtil
.
isNotEmpty
(
pn
))
{
barcode
.
setPartNumber
(
pn
);
needS
=
true
;
}
if
(
ObjectUtil
.
isNotEmpty
(
code
))
{
barcode
.
setBarcode
(
code
);
needS
=
true
;
}
int
count
=
result
.
get
(
0
).
getResponseCount
();
if
(
count
>
0
)
{
barcode
.
setAmount
(
count
);
needS
=
true
;
}
if
(
needS
)
{
log
.
info
(
"barcode["
+
barcode
.
getBarcode
()
+
"] 准备入库,调用 RequestGetPartInfo ,更改pn=["
+
barcode
.
getPartNumber
()
+
"],code=["
+
barcode
.
getBarcode
()
+
"],count=["
+
barcode
.
getAmount
()
+
"]"
);
barcodeManager
.
saveBarcode
(
barcode
);
}
}
//
List<TMSPart> result = tmsApis.RequestGetPartInfo(0, barcode.getFullCode());
//
if (result.size() > 0) {
//
String pn = result.get(0).getPartName();
//
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;
//
if (ObjectUtil.isNotEmpty(pn)) {
//
barcode.setPartNumber(pn);
//
needS = true;
//
}
//
if (ObjectUtil.isNotEmpty(code)) {
//
barcode.setBarcode(code);
//
needS = true;
//
}
//
int count = result.get(0).getResponseCount();
//
if (count > 0) {
//
barcode.setAmount(count);
//
needS = true;
//
}
//
if (needS) {
//
log.info("barcode[" + barcode.getBarcode() + "] 准备入库,调用 RequestGetPartInfo ,更改pn=[" + barcode.getPartNumber() + "],code=[" + barcode.getBarcode() + "],count=[" + barcode.getAmount() + "]");
//
barcodeManager.saveBarcode(barcode);
//
}
//
}
return
barcode
;
}
...
...
@@ -185,7 +240,7 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
@Override
public
boolean
deviceStatusChanges
(
String
deviceStatusUrl
,
String
[]
cids
,
Integer
[]
statusList
)
{
log
.
info
(
"deviceStatusChanges ,设备状态变化["
+
JsonUtil
.
toJsonStr
(
cids
)
+
"],["
+
JsonUtil
.
toJsonStr
(
statusList
)
+
"],通知TMS"
);
//
UpdateStorageConnectionInfo(cids,statusList);
UpdateStorageConnectionInfo
(
cids
,
statusList
);
RequestSyncRackStatusInfo
(
cids
,
statusList
);
return
true
;
...
...
@@ -225,8 +280,10 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
}
}
boolean
needSendRack
=
false
;
if
(
status
==-
1
||
status
==
0
||
status
>=
1
){
if
(
status
>=
1
){
needSendRack
=
false
;
needSyncDataList
.
add
(
storage
);
log
.
info
(
"设备"
+
cid
+
"状态改变,当前状态:"
+
status
+
",需要通知韩华,并同步物料信息"
);
}
else
{
...
...
@@ -241,26 +298,31 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
if
(
status
>=
1
)
{
flag
=
2
;
}
List
<
StoragePos
>
allStorage
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
for
(
StoragePos
pos
:
allStorage
)
{
TMSRackStatus
st
=
new
TMSRackStatus
();
st
.
setPosName
(
pos
.
getPosName
());
st
.
setRackID
(
storage
.
getCid
());
st
.
setFlag
(
flag
);
st
.
setOutdate
(
""
);
st
.
setIndate
(
""
);
if
(
flag
==
2
)
{
st
.
setIndate
(
dateString
);
}
else
{
st
.
setOutdate
(
dateString
);
if
(
needSendRack
)
{
//只有上线需要发送rack
List
<
StoragePos
>
allStorage
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
for
(
StoragePos
pos
:
allStorage
)
{
TMSRackStatus
st
=
new
TMSRackStatus
();
st
.
setPosName
(
pos
.
getPosName
());
st
.
setRackID
(
storage
.
getCid
());
st
.
setFlag
(
flag
);
st
.
setOutdate
(
""
);
st
.
setIndate
(
""
);
if
(
flag
==
2
)
{
st
.
setIndate
(
dateString
);
}
else
{
st
.
setOutdate
(
dateString
);
}
SyncRackStatusDatas
.
add
(
st
);
}
SyncRackStatusDatas
.
add
(
st
);
}
}
//离线只发状态改变
//上线时只发状态改变,和reel同步,暂不发Rack
if
(
storageIds
.
size
()
>
0
)
{
tmsApis
.
RequestSyncRackStatusInfo
(
0
,
SyncRackStatusDatas
);
//
tmsApis.RequestSyncRackStatusInfo(0, SyncRackStatusDatas);
}
if
(
needSyncDataList
.
size
()>
0
){
for
(
Storage
st
:
...
...
@@ -327,21 +389,24 @@ public class HanwhaApiHandler extends BaseSmfApiListener {
status
=
bean
.
getStatus
();
}
}
String
conCode
=
TMS_Code
.
CODE_1020
;
if
(
status
<=
0
)
{
//初始化失败
conCode
=
TMS_Code
.
CODE_0002
;
}
else
if
(
status
==
1
)
{
conCode
=
TMS_Code
.
CODE_1020
;
}
else
if
(
status
<=
4
)
{
//报警
conCode
=
TMS_Code
.
CODE_1024
;
}
else
if
(
status
==
5
)
{
conCode
=
TMS_Code
.
CODE_1023
;
}
else
{
//忙碌
conCode
=
TMS_Code
.
CODE_1010
;
String
conCode
=
"0"
;
// if (status <= 0) {
// //初始化失败
// conCode = TMS_Code.CODE_0002;
// } else if (status == 1) {
// conCode = TMS_Code.CODE_1020;
// } else if (status <= 4) {
// //报警
// conCode = TMS_Code.CODE_1024;
// } else if (status == 5) {
// conCode = TMS_Code.CODE_1023;
// } else {
// //忙碌
// conCode = TMS_Code.CODE_1010;
// }
if
(
status
>=
1
){
conCode
=
"2"
;
}
storageIds
.
add
(
storage
.
getCid
());
storageTypes
.
add
(
type
);
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSApis.java
查看文件 @
f89c27d
...
...
@@ -45,6 +45,9 @@ public class TMSApis {
item
.
setReelCode
(
getMapValue
(
map
,
"ReelCode"
));
item
.
setResponseCount
((
Integer
)
getMapValue
(
map
,
"Count"
));
item
.
setRequestCount
((
Integer
)
getMapValue
(
map
,
"Count"
));
item
.
setProductionDate
(
getMapValue
(
map
,
"ProductionDate"
));
item
.
setExpiryDate
(
getMapValue
(
map
,
"ExpiryDate"
));
item
.
setWarehousingDate
(
getMapValue
(
map
,
"WarehousingDate"
));
list
.
add
(
item
);
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMSCommunicator.java
查看文件 @
f89c27d
...
...
@@ -18,7 +18,9 @@ import com.neotel.smfcore.common.exception.ValidateException;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.core.api.SmfApi
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
...
...
@@ -26,6 +28,7 @@ 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
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
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
;
...
...
@@ -93,6 +96,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
@Autowired
private
IDataLogManager
dataLogManager
;
@Autowired
private
IComponentManager
componentManager
;
private
static
int
gRequestID
=
1000
;
public
static
int
GetRequestID
()
{
...
...
@@ -463,9 +469,10 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//查找工单的所有任务
Criteria
c
=
Criteria
.
where
(
"sourceName"
).
is
(
liteOrder
.
getOrderNo
()).
and
(
"type"
).
is
(
2
);
List
<
DataLog
>
dataLogs
=
dataLogManager
.
findByQuery
(
new
Query
(
c
));
for
(
DataLog
task
:
dataLogs
)
{
boolean
hasCancelTask
=
false
;
boolean
allCancel
=
true
;
for
(
DataLog
task
:
dataLogs
)
{
// if(ObjectUtil.isNotEmpty(item.getPn())&&task.getPartNumber().equals(task.getPartNumber())){
//
// }else if(ObjectUtil.isNotEmpty(item.getRi())&&task.getBarcode().equals(task.getBarcode())){
...
...
@@ -473,29 +480,40 @@ public class TMSCommunicator implements WsMsgReceivedListener {
// }else{
// 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
(
tmsParts
.
size
(),
task
.
getPartNumber
(),
task
.
getBarcode
(),
task
.
getNum
(),
task
.
getNum
(),
logCode
,
task
.
getCid
(),
task
.
getPosName
());
tmsParts
.
add
(
part
);
//是工单出库任务
if
(
task
.
isCheckOutTask
()
&&
task
.
getSourceName
().
equals
(
liteOrder
.
getOrderNo
()))
{
int
responseNum
=
task
.
getNum
();
String
logCode
=
TMS_Code
.
CODE_2013
;
//默认已完成
if
(
task
.
isCancel
())
{
hasCancelTask
=
true
;
responseNum
=
0
;
logCode
=
TMS_Code
.
CODE_2012
;
//取消成功
}
else
if
(
task
.
isExecuting
()
||
task
.
isWait
())
{
logCode
=
TMS_Code
.
CODE_2011
;
//出库中
allCancel
=
false
;
}
else
{
logCode
=
TMS_Code
.
CODE_2013
;
//已完成
allCancel
=
false
;
}
TMSPart
part
=
TMSPart
.
newBean
(
tmsParts
.
size
(),
task
.
getPartNumber
(),
task
.
getBarcode
(),
task
.
getNum
(),
responseNum
,
logCode
,
task
.
getCid
(),
task
.
getPosName
());
tmsParts
.
add
(
part
);
}
}
//有取消且有完成的返回2016.全部取消返回2012
if
(
liteOrder
.
isClosed
())
{
if
(
tmsParts
.
size
()
>
0
)
{
//如果工单全部取消,需要发送2012
if
(
allCancel
)
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2012
);
}
else
if
(
hasCancelTask
)
{
//有取消任务返回2016
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2016
);
}
else
if
(
tmsParts
.
size
()
>
0
)
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2013
);
}
else
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2001
);
}
}
else
if
(
liteOrder
.
isOutOne
()
||
liteOrder
.
isOutTails
()
||
liteOrder
.
isOutOne
())
{
}
else
if
(
liteOrder
.
isOutOne
()
||
liteOrder
.
isOutTails
()
||
liteOrder
.
isOutOne
())
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2011
);
}
...
...
@@ -533,10 +551,10 @@ public class TMSCommunicator implements WsMsgReceivedListener {
String
reelCode
;
int
count
;
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
switch
(
topic
)
{
case
"RequestDeliveryOrder"
:
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
partItems
=
getMapValue
(
msgMap
,
"PartNames"
);
partCounts
=
getMapValue
(
msgMap
,
"Counts"
);
towerLamp
=
(
boolean
)
getMapValue
(
msgMap
,
"TowerLamp"
);
...
...
@@ -544,16 +562,19 @@ public class TMSCommunicator implements WsMsgReceivedListener {
RequestDeliveryOrder
(
requestID
,
partItems
,
partCounts
,
towerLamp
);
break
;
case
"RequestDeliveryOrderByLocation"
:
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
List
<
TMSPos
>
Locations
=
getMapValue
(
msgMap
,
"Locations"
);
//3.10 RequestDeliveryOrderByLocation
RequestDeliveryOrderByLocation
(
requestID
,
Locations
);
break
;
case
"RequestDeliveryOrderByReelCd"
:
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
List
<
String
>
reelCds
=
getMapValue
(
msgMap
,
"ReelCds"
);
//3.12 RequestDeliveryOrderByReelCd
RequestDeliveryOrderByReelCd
(
requestID
,
reelCds
);
break
;
case
"RequestUpdateDeliveryReserveState"
:
log
.
info
(
"onMsgReceived: requestID=["
+
requestID
+
"],Topic=["
+
topic
+
"],message:["
+
message
+
"],"
);
List
<
String
>
reserveCodes
=
getMapValue
(
msgMap
,
"ReserveCodes"
);
List
<
Integer
>
resultCodes
=
getMapValue
(
msgMap
,
"ResultCodes"
);
//
...
...
@@ -604,11 +625,13 @@ public class TMSCommunicator implements WsMsgReceivedListener {
// RequestPrintLabelDockingCart(requestID, dockingCartInfo);
// break;
case
"NotifyLog"
:
// log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
break
;
default
:
// log.error("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"],requestID=["+requestID+"],message:["+message+"]");
// log.info("onMsgReceived: requestID=["+requestID+"],Topic=["+topic+"],message:["+message+"],");
log
.
debug
(
"onMsgReceived:未找到对应的TOPIC: Topic=["
+
topic
+
"],requestID=["
+
requestID
+
"],message:["
+
message
+
"]"
);
// log.
error
("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"] ");
// log.
debug
("onMsgReceived:未找到对应的TOPIC: Topic=["+topic+"] ");
return
;
}
}
...
...
@@ -724,31 +747,58 @@ public class TMSCommunicator implements WsMsgReceivedListener {
try
{
int
curroNum
=
0
;
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
())
{
requestNum
=
task
.
getNum
()
-
(
curroNum
-
item
.
getNeedNum
());
try
{
for
(
DataLog
task
:
dataLogs
)
{
if
(
ObjectUtil
.
isEmpty
(
task
.
getSourceName
())
||
ObjectUtil
.
isEmpty
(
task
.
getSubSourceId
()))
{
continue
;
}
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
())
{
requestNum
=
task
.
getNum
()
-
(
curroNum
-
item
.
getNeedNum
());
}
TMSPart
p
=
TMSPart
.
newBean
(
parts
.
size
(),
task
.
getPartNumber
(),
task
.
getBarcode
(),
requestNum
,
task
.
getNum
(),
TMS_Code
.
CODE_2010
,
task
.
getCid
(),
task
.
getPosName
());
log
.
info
(
"RequestDeliveryOrder pn="
+
task
.
getPartNumber
()
+
",出库成功:code="
+
TMS_Code
.
CODE_2010
+
",posName="
+
task
.
getPosName
()
+
",barcode="
+
task
.
getBarcode
());
parts
.
add
(
p
);
}
TMSPart
p
=
TMSPart
.
newBean
(
parts
.
size
(),
task
.
getPartNumber
(),
task
.
getBarcode
(),
requestNum
,
task
.
getNum
(),
TMS_Code
.
CODE_2010
,
task
.
getCid
(),
task
.
getPosName
());
log
.
info
(
"RequestDeliveryOrder pn="
+
task
.
getPartNumber
()
+
",出库成功:code="
+
TMS_Code
.
CODE_2010
+
",posName="
+
task
.
getPosName
()
+
",barcode="
+
task
.
getBarcode
());
parts
.
add
(
p
);
}
}
}
catch
(
Exception
ex
)
{
log
.
error
(
" RequestDeliveryOrder 查找 "
+
item
.
getPn
()
+
"的出库任务出错:error::"
,
ex
.
toString
());
}
if
(
curroNum
<=
0
)
{
//如果缺料返回2002,否则还是返回2010
String
shortValue
=
item
.
getAppend
(
"shortage"
);
if
(
ObjectUtil
.
isEmpty
(
shortValue
))
{
shortValue
=
""
;
}
if
(
ObjectUtil
.
isNotEmpty
(
shortValue
)
&&
shortValue
.
equals
(
"true"
))
{
//未出库
TMSPart
p
=
TMSPart
.
newBean
(
parts
.
size
(),
item
.
getPn
(),
""
,
item
.
getNeedNum
(),
item
.
getOutNum
(),
TMS_Code
.
CODE_2002
,
""
,
""
);
log
.
info
(
"RequestDeliveryOrder pn="
+
item
.
getPn
()
+
",出库失败缺料:code="
+
TMS_Code
.
CODE_2002
);
//查找库存中是否有此物料,如果数量不足返回2003,否则返回2002
List
<
InventoryItem
>
itmes
=
dataCache
.
getInventoryByPN
(
item
.
getPn
());
TMSPart
p
;
if
(
itmes
.
size
()
>
0
)
{
//如果是有库存但是库存不足,发送2003
p
=
TMSPart
.
newBean
(
parts
.
size
(),
item
.
getPn
(),
""
,
item
.
getNeedNum
(),
item
.
getOutNum
(),
TMS_Code
.
CODE_2001
,
""
,
""
);
log
.
info
(
"RequestDeliveryOrder pn="
+
item
.
getPn
()
+
",出库失败缺料,库存不足:code="
+
TMS_Code
.
CODE_2001
);
}
else
{
//判断pn是否存在,存在返回2002,否则返回2003
Component
component
=
componentManager
.
findOneByPN
(
item
.
getPn
());
if
(
component
==
null
){
//pn不存在,返回2003
p
=
TMSPart
.
newBean
(
parts
.
size
(),
item
.
getPn
(),
""
,
item
.
getNeedNum
(),
item
.
getOutNum
(),
TMS_Code
.
CODE_2003
,
""
,
""
);
log
.
info
(
"RequestDeliveryOrder pn="
+
item
.
getPn
()
+
",出库失败缺料,PN不存在:code="
+
TMS_Code
.
CODE_2003
);
}
else
{
//库存无此物料,发送2002
p
=
TMSPart
.
newBean
(
parts
.
size
(),
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
(
parts
.
size
(),
item
.
getPn
(),
""
,
item
.
getNeedNum
(),
item
.
getOutNum
(),
TMS_Code
.
CODE_2010
,
""
,
""
);
...
...
@@ -759,7 +809,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
}
}
catch
(
Exception
ex
)
{
log
.
error
(
" RequestDeliveryOrder "
+
item
.
getPn
()
+
",error:
"
+
ex
.
toString
());
log
.
error
(
" RequestDeliveryOrder "
+
item
.
getPn
()
+
",error:
:"
,
ex
.
toString
());
}
}
...
...
@@ -951,6 +1001,9 @@ public class TMSCommunicator implements WsMsgReceivedListener {
private
void
RequestUpdateDeliveryReserveState
(
int
requestID
,
List
<
String
>
reserveCodes
,
List
<
Integer
>
resultCodes
)
{
//3.15 ResponseUpdateDeliveryReserveState
//2016也需要取消工单,返回的时候整体的code需要返回2016
List
<
TMSReserve
>
ReserveList
=
new
ArrayList
<>();
int
state
=
0
;
try
{
...
...
@@ -979,7 +1032,7 @@ public class TMSCommunicator implements WsMsgReceivedListener {
tmsReserve
.
setResultCode
(
resultCode
);
tmsReserve
.
setPartList
(
new
ArrayList
<>());
List
<
TMSPart
>
tmsParts
=
new
ArrayList
<>();
if
(
resultCode
.
equals
(
TMS_Code
.
CODE_2012
))
{
if
(
resultCode
.
equals
(
TMS_Code
.
CODE_2012
)
||
resultCode
.
equals
(
TMS_Code
.
CODE_2016
)
)
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2014
);
LiteOrder
order
=
liteOrderCache
.
getLiteOrder
(
reserveCode
);
if
(
order
!=
null
)
{
...
...
@@ -1026,7 +1079,11 @@ public class TMSCommunicator implements WsMsgReceivedListener {
//判断工单是否可以取消,
liteOrderCache
.
closeOrder
(
order
.
getOrderNo
());
if
(
order
.
isClosed
())
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2012
);
//取消成功
if
(
resultCode
.
equals
(
TMS_Code
.
CODE_2016
))
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2016
);
//取消成功
}
else
{
tmsReserve
.
setResultCode
(
TMS_Code
.
CODE_2012
);
//取消成功
}
}
else
{
order
.
addAppendDate
(
"cancel"
,
""
);
liteOrderManager
.
save
(
order
);
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMS_Code.java
查看文件 @
f89c27d
...
...
@@ -78,7 +78,7 @@ public class TMS_Code {
public
static
final
String
CODE_1024
=
"1024"
;
/**
* 2001 Part not enough
* 2001 Part not enough
数量不足
*/
public
static
final
String
CODE_2001
=
"2001"
;
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/bean/TMSPart.java
查看文件 @
f89c27d
...
...
@@ -24,6 +24,14 @@ public class TMSPart extends TMSPos implements Serializable {
private
int
responseCount
=
0
;
private
String
resultCode
=
""
;
public
String
ProductionDate
=
""
;
public
String
ExpiryDate
=
""
;
public
String
WarehousingDate
=
""
;
public
static
TMSPart
newBean
(
int
index
,
String
pn
,
String
barcode
,
int
requestCount
,
int
responseCount
,
String
resultCode
,
String
cid
,
String
posName
)
{
TMSPart
bean
=
new
TMSPart
();
bean
.
setIndex
(
index
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论