Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 473ecc61
由
LN
编写于
2024-08-13 17:20:13 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
调试问题修改
1 个父辈
bb79dd0f
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
150 行增加
和
71 行删除
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.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/util/DataCache.java
查看文件 @
473ecc6
...
...
@@ -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/order/LiteOrderCache.java
查看文件 @
473ecc6
...
...
@@ -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/custom/hanwha/handler/HanwhaApiHandler.java
查看文件 @
473ecc6
...
...
@@ -185,7 +185,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 +225,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,24 +243,29 @@ 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
);
}
...
...
@@ -327,21 +334,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/TMSCommunicator.java
查看文件 @
473ecc6
...
...
@@ -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
());
}
}
...
...
src/main/java/com/neotel/smfcore/custom/hanwha/handler/TMS_Code.java
查看文件 @
473ecc6
...
...
@@ -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"
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论