Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit e230cfd4
由
张少辉
编写于
2026-01-29 15:21:40 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.电子仓对接momo功能
1 个父辈
569043b0
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
122 行增加
和
19 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/XLRBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/inList/util/InListCache.java
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/custom/aiqingzhiyin1643/momo/MomoApi.java
src/main/java/com/neotel/smfcore/custom/zhongche1568/controller/ZhongCheDeviceController.java
src/main/resources/messages.properties
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
e230cfd
...
@@ -744,6 +744,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -744,6 +744,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
//二维码状态
//二维码状态
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
task
.
getBarcode
());
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
task
.
getBarcode
());
if
(
barcode
!=
null
)
{
if
(
barcode
!=
null
)
{
task
.
setStockoutNo
(
barcode
.
getStockoutNo
());
barcode
.
setStockoutNoLine
(
""
);
barcode
.
setLastStockOutNum
(
""
);
barcode
.
setStockoutNo
(
""
);
barcode
.
setNeedStockNum
(
0
);
barcode
.
setUsedCount
(
barcode
.
getUsedCount
()
+
1
);
barcode
.
setUsedCount
(
barcode
.
getUsedCount
()
+
1
);
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
updateSluggishTime
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcode
.
updateSluggishTime
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/XLRBoxHandler.java
查看文件 @
e230cfd
...
@@ -77,8 +77,8 @@ public class XLRBoxHandler extends BaseDeviceHandler {
...
@@ -77,8 +77,8 @@ public class XLRBoxHandler extends BaseDeviceHandler {
}
else
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
}
else
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
,
OP_STATUS
.
OUT_BOX
);
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
barcode
,
executeTime
,
OP_STATUS
.
OUT_BOX
);
}
else
if
(
BOX_STATUS
.
OUT_END
==
status
)
{
//出库完成(放到仓门口
}
else
if
(
BOX_STATUS
.
OUT_END
==
status
)
{
//出库完成(放到仓门口
log
.
info
(
statusBean
.
getCid
()
+
"将物料从库位["
+
posName
+
"]出库到门口/料串完成"
);
/*
log.info(statusBean.getCid() +"将物料从库位["+posName+"]出库到门口/料串完成");
reelOnShelf
(
statusBean
.
getCid
(),
posName
);
reelOnShelf(statusBean.getCid(),posName);
*/
}
}
}
}
}
catch
(
ValidateException
e
)
{
}
catch
(
ValidateException
e
)
{
...
...
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
e230cfd
...
@@ -9,6 +9,7 @@ import com.google.common.collect.Maps;
...
@@ -9,6 +9,7 @@ import com.google.common.collect.Maps;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
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.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
...
@@ -22,6 +23,7 @@ import com.neotel.smfcore.core.language.util.MessageUtils;
...
@@ -22,6 +23,7 @@ import com.neotel.smfcore.core.language.util.MessageUtils;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
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.COMPATIBLE_TYPE
;
import
com.neotel.smfcore.core.storage.enums.CORRESPONDING_WAREHOUSE
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.rest.dto.InventoryItemDto
;
import
com.neotel.smfcore.core.storage.rest.dto.InventoryItemDto
;
import
com.neotel.smfcore.core.storage.rest.query.InventoryQueryCriteria
;
import
com.neotel.smfcore.core.storage.rest.query.InventoryQueryCriteria
;
...
@@ -743,6 +745,12 @@ public class DataCache {
...
@@ -743,6 +745,12 @@ public class DataCache {
//入库单处理
//入库单处理
if
(
ObjectUtil
.
isNotEmpty
(
storage
.
getInListName
()))
{
if
(
ObjectUtil
.
isNotEmpty
(
storage
.
getInListName
()))
{
inListCache
.
UpdateInList
(
storage
.
getInListName
(),
pos
,
barcode
);
inListCache
.
UpdateInList
(
storage
.
getInListName
(),
pos
,
barcode
);
}
else
{
if
(
storage
.
getCorrespondingWarehouse
()
==
CORRESPONDING_WAREHOUSE
.
ELECTRONIC_WAREHOUSE
){
if
(
StringUtils
.
isNotEmpty
(
barcode
.
getReceiptOrder
())){
inListCache
.
UpdateInList
(
barcode
.
getReceiptOrder
(),
pos
,
barcode
);
}
}
}
}
updateInOutData
(
cid
,
storage
.
getId
(),
1
);
updateInOutData
(
cid
,
storage
.
getId
(),
1
);
}
}
...
@@ -1020,4 +1028,12 @@ public class DataCache {
...
@@ -1020,4 +1028,12 @@ public class DataCache {
}
}
return
list
;
return
list
;
}
}
public
boolean
isElectronicWarehouseDocking
()
{
Boolean
ddocking
=
getCache
(
Constants
.
Cache_Electronic_Warehouse_Docking
);
if
(
ddocking
==
null
)
{
ddocking
=
false
;
}
return
ddocking
;
}
}
}
src/main/java/com/neotel/smfcore/core/inList/util/InListCache.java
查看文件 @
e230cfd
...
@@ -115,6 +115,7 @@ public class InListCache {
...
@@ -115,6 +115,7 @@ public class InListCache {
}
}
}
else
if
(
item
.
getRi
().
equals
(
barcode
.
getBarcode
())){
}
else
if
(
item
.
getRi
().
equals
(
barcode
.
getBarcode
())){
item
.
addReelInfo
(
new
ItemReelInfo
(
barcode
.
getBarcode
(),
barcode
.
getAmount
(),
new
Date
(),
pos
.
getPosName
()));
item
.
addReelInfo
(
new
ItemReelInfo
(
barcode
.
getBarcode
(),
barcode
.
getAmount
(),
new
Date
(),
pos
.
getPosName
()));
item
.
setNum
(
item
.
getInNum
());
listItemManager
.
save
(
item
);
listItemManager
.
save
(
item
);
log
.
info
(
"UpdateInList 成功: 入库单["
+
inListName
+
"]posName["
+
pos
.
getPosName
()
+
"]PN["
+
barcode
.
getPartNumber
()
+
"]RI["
+
barcode
.
getBarcode
()
+
"]num["
+
barcode
.
getAmount
()
+
"]"
);
log
.
info
(
"UpdateInList 成功: 入库单["
+
inListName
+
"]posName["
+
pos
.
getPosName
()
+
"]PN["
+
barcode
.
getPartNumber
()
+
"]RI["
+
barcode
.
getBarcode
()
+
"]num["
+
barcode
.
getAmount
()
+
"]"
);
updateOk
=
true
;
updateOk
=
true
;
...
@@ -135,8 +136,8 @@ public class InListCache {
...
@@ -135,8 +136,8 @@ public class InListCache {
inList
.
setStatus
(
INLIST_STATUS
.
OK
);
inList
.
setStatus
(
INLIST_STATUS
.
OK
);
log
.
info
(
"UpdateInList 入库单["
+
inListName
+
"]更改状态为:OK"
);
log
.
info
(
"UpdateInList 入库单["
+
inListName
+
"]更改状态为:OK"
);
}
else
if
(!
listOk
&&
updateOk
)
{
}
else
if
(!
listOk
&&
updateOk
)
{
inList
.
setStatus
(
INLIST_STATUS
.
ABNORMAL
);
//
inList.setStatus(INLIST_STATUS.ABNORMAL);
log
.
info
(
"UpdateInList 入库单["
+
inListName
+
"]更改状态为:ABNORMAL"
);
//
log.info("UpdateInList 入库单[" + inListName + "]更改状态为:ABNORMAL");
}
}
listManager
.
save
(
inList
);
listManager
.
save
(
inList
);
addInListToMap
(
inList
);
addInListToMap
(
inList
);
...
...
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
e230cfd
...
@@ -267,6 +267,8 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
...
@@ -267,6 +267,8 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
private
String
currentLoc
;
private
String
currentLoc
;
private
String
stockoutNo
=
""
;
public
String
getBarcode
()
{
public
String
getBarcode
()
{
if
(
barcode
==
null
){
if
(
barcode
==
null
){
return
""
;
return
""
;
...
...
src/main/java/com/neotel/smfcore/custom/aiqingzhiyin1643/momo/MomoApi.java
查看文件 @
e230cfd
...
@@ -58,13 +58,45 @@ public class MomoApi extends BaseSmfApiListener {
...
@@ -58,13 +58,45 @@ public class MomoApi extends BaseSmfApiListener {
String
storageId
=
task
.
getStorageId
();
String
storageId
=
task
.
getStorageId
();
Storage
storage
=
dataCache
.
getStorageById
(
storageId
);
Storage
storage
=
dataCache
.
getStorageById
(
storageId
);
if
(
storage
!=
null
)
{
if
(
storage
!=
null
)
{
//默认结构仓的
if
(
storage
.
getCorrespondingWarehouse
()
==
CORRESPONDING_WAREHOUSE
.
STRUCTURAL_WAREHOUSE
)
{
String
barcodeStr
=
task
.
getBarcode
();
String
barcodeStr
=
task
.
getBarcode
();
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
barcodeStr
);
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
barcodeStr
);
//默认结构仓的
if
(
storage
.
getCorrespondingWarehouse
()
==
CORRESPONDING_WAREHOUSE
.
STRUCTURAL_WAREHOUSE
||
storage
.
getCorrespondingWarehouse
()
==
CORRESPONDING_WAREHOUSE
.
ELECTRONIC_WAREHOUSE
)
{
String
receiptOrder
=
barcode
.
getReceiptOrder
();
String
receiptOrder
=
barcode
.
getReceiptOrder
();
if
(
StringUtils
.
isNotEmpty
(
receiptOrder
))
{
if
(
StringUtils
.
isNotEmpty
(
receiptOrder
))
{
stockIn
(
barcode
);
stockIn
(
barcode
);
}
else
{
if
(
storage
.
getCorrespondingWarehouse
()
==
CORRESPONDING_WAREHOUSE
.
ELECTRONIC_WAREHOUSE
)
{
if
(
StringUtils
.
isNotEmpty
(
task
.
getStockoutNo
())){
stockReturn
(
barcode
);
}
}
}
}
}
}
}
/**
* 接口5:MOM接收WMS的出库结果
* @param outNotifyUrl
* @param task
*/
@Override
public
void
outTaskStatusChange
(
String
outNotifyUrl
,
DataLog
task
)
{
if
(!
task
.
isOutFromPos
())
{
String
storageId
=
task
.
getStorageId
();
Storage
storage
=
dataCache
.
getStorageById
(
storageId
);
if
(
storage
!=
null
)
{
//电子仓出库通知
if
(
storage
.
getCorrespondingWarehouse
()
==
CORRESPONDING_WAREHOUSE
.
ELECTRONIC_WAREHOUSE
)
{
String
barcodeStr
=
task
.
getBarcode
();
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
barcodeStr
);
String
stockoutNo
=
barcode
.
getStockoutNo
();
if
(
StringUtils
.
isNotEmpty
(
stockoutNo
))
{
stockOut
(
barcode
);
}
}
}
}
}
}
...
@@ -132,18 +164,6 @@ public class MomoApi extends BaseSmfApiListener {
...
@@ -132,18 +164,6 @@ public class MomoApi extends BaseSmfApiListener {
/**
/**
* 接口5:MOM接收WMS的出库结果
* @param outNotifyUrl
* @param task
*/
@Override
public
void
outTaskStatusChange
(
String
outNotifyUrl
,
DataLog
task
)
{
if
(!
task
.
isNotifyMomo
())
{
}
}
/**
* 接口10:WMS从MOM获取新包装条码
* 接口10:WMS从MOM获取新包装条码
* @param request
* @param request
* @return
* @return
...
...
src/main/java/com/neotel/smfcore/custom/zhongche1568/controller/ZhongCheDeviceController.java
查看文件 @
e230cfd
...
@@ -13,10 +13,15 @@ import com.neotel.smfcore.common.utils.StringUtils;
...
@@ -13,10 +13,15 @@ import com.neotel.smfcore.common.utils.StringUtils;
import
com.neotel.smfcore.core.api.SmfApi
;
import
com.neotel.smfcore.core.api.SmfApi
;
import
com.neotel.smfcore.core.api.bean.CodeValidateParam
;
import
com.neotel.smfcore.core.api.bean.CodeValidateParam
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
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.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.inList.service.po.InList
;
import
com.neotel.smfcore.core.inList.service.po.InListItem
;
import
com.neotel.smfcore.core.inList.util.InListCache
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
...
@@ -71,6 +76,12 @@ public class ZhongCheDeviceController {
...
@@ -71,6 +76,12 @@ public class ZhongCheDeviceController {
@Autowired
@Autowired
private
IAlarmInfoDao
alarmInfoDao
;
private
IAlarmInfoDao
alarmInfoDao
;
@Autowired
private
InListCache
inListCache
;
@Autowired
private
IComponentManager
componentManager
;
private
static
String
lineMsg
=
""
;
private
static
String
lineMsg
=
""
;
/**
/**
...
@@ -291,6 +302,49 @@ public class ZhongCheDeviceController {
...
@@ -291,6 +302,49 @@ public class ZhongCheDeviceController {
}
}
}
}
//判断是不是对接momo
boolean
isDocking
=
dataCache
.
isElectronicWarehouseDocking
();
if
(
isDocking
)
{
//判断是不是退库操作
if
(
StringUtils
.
isEmpty
(
barcode
.
getStockoutNo
()))
{
//判断是否有入库单
Collection
<
InList
>
aLlInList
=
inListCache
.
getALlInList
();
InListItem
item
=
null
;
for
(
InList
inList
:
aLlInList
)
{
List
<
InListItem
>
inListItems
=
inList
.
getInListItems
();
for
(
InListItem
inListItem
:
inListItems
)
{
if
(
barcode
.
getBarcode
().
equals
(
inListItem
.
getRi
()))
{
item
=
inListItem
;
break
;
}
}
if
(
item
!=
null
)
{
break
;
}
}
if
(
item
==
null
)
{
throw
new
ValidateException
(
"smfcore.noValidInList"
,
"[{0}]入库单中未找到该物料"
,
new
String
[]{
barcode
.
getBarcode
()});
}
if
(
item
.
getInNum
()
>=
item
.
getNum
())
{
throw
new
ValidateException
(
"smfcore.noValidInList"
,
"[{0}]入库单中该物料已入库完成,不能继续入库"
,
new
String
[]{
barcode
.
getBarcode
()});
}
barcode
.
setReceiptOrder
(
item
.
getName
());
barcode
.
setRowNumber
(
item
.
getRowNumber
());
}
}
//设置元器件中的其他值
Component
component
=
componentManager
.
findByPartNumberAndProvider
(
barcode
.
getPartNumber
(),
barcode
.
getProvider
());
if
(
component
!=
null
){
barcode
.
setDescription
(
component
.
getDescription
());
barcode
.
setProviderMaterialCode
(
component
.
getProviderMaterialCode
());
barcode
.
setProviderNumber
(
component
.
getProviderNumber
());
barcode
.
setContainmentAmount
(
component
.
getContainmentAmount
());
barcode
.
setPlant
(
component
.
getPlant
());
barcode
.
setOriginalFactory
(
component
.
getOriginalFactory
());
barcode
.
setMassProduction
(
component
.
getMassProduction
());
}
//先移除被锁定的库位
//先移除被锁定的库位
ReelLockPosUtil
.
removeReelLockPosInfo
(
barcode
.
getBarcode
());
ReelLockPosUtil
.
removeReelLockPosInfo
(
barcode
.
getBarcode
());
log
.
info
(
barcode
.
getBarcode
()
+
"料盘重新入库,先移除被锁定的库位"
);
log
.
info
(
barcode
.
getBarcode
()
+
"料盘重新入库,先移除被锁定的库位"
);
...
@@ -570,6 +624,8 @@ public class ZhongCheDeviceController {
...
@@ -570,6 +624,8 @@ public class ZhongCheDeviceController {
//仓位状态
//仓位状态
barcode
.
setCheckOutDate
(
new
Date
(),
""
);
barcode
.
setCheckOutDate
(
new
Date
(),
""
);
barcode
.
setPosName
(
""
);
barcode
.
setPosName
(
""
);
barcode
.
setReceiptOrder
(
""
);
barcode
.
setRowNumber
(
""
);
barcodeManager
.
save
(
barcode
);
barcodeManager
.
save
(
barcode
);
}
}
}
}
...
@@ -583,11 +639,12 @@ public class ZhongCheDeviceController {
...
@@ -583,11 +639,12 @@ public class ZhongCheDeviceController {
if
(
status
.
equals
(
OP_STATUS
.
EXECUTING
.
name
()))
{
if
(
status
.
equals
(
OP_STATUS
.
EXECUTING
.
name
()))
{
taskService
.
updateQueueTask
(
opTask
);
taskService
.
updateQueueTask
(
opTask
);
}
else
{
}
else
{
taskService
.
moveTaskToFinished
(
opTask
);
taskService
.
updateFinishedTask
(
opTask
);
if
(!
opTask
.
isOutFromPos
())
{
if
(!
opTask
.
isOutFromPos
())
{
outFromPos
(
opTask
);
outFromPos
(
opTask
);
opTask
.
setOutFromPos
(
true
);
opTask
.
setOutFromPos
(
true
);
}
}
taskService
.
moveTaskToFinished
(
opTask
);
taskService
.
updateFinishedTask
(
opTask
);
taskService
.
updateFinishedTask
(
opTask
);
}
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
...
@@ -657,6 +714,7 @@ public class ZhongCheDeviceController {
...
@@ -657,6 +714,7 @@ public class ZhongCheDeviceController {
barcode
.
setUsed
(
true
);
barcode
.
setUsed
(
true
);
barcode
.
setUsedDate
(
new
Date
());
barcode
.
setUsedDate
(
new
Date
());
barcode
.
setReceiptOrder
(
""
);
//仓位状态
//仓位状态
barcode
.
setCheckOutDate
(
new
Date
(),
""
);
barcode
.
setCheckOutDate
(
new
Date
(),
""
);
barcode
.
setPosName
(
""
);
barcode
.
setPosName
(
""
);
...
...
src/main/resources/messages.properties
查看文件 @
e230cfd
...
@@ -439,3 +439,4 @@ smfcore.component.setMinimumPackagingQuantity=\u8BF7\u8BBE\u7F6E\u6700\u5C0F\u53
...
@@ -439,3 +439,4 @@ smfcore.component.setMinimumPackagingQuantity=\u8BF7\u8BBE\u7F6E\u6700\u5C0F\u53
smfcore.component.minimumPackagingQuantityError
=
\u6700\u
5C0F
\u5305\u
88C5
\u6570\u
91CF[{0}]
\u
8F93
\u5165\u9519\u
8BEF
smfcore.component.minimumPackagingQuantityError
=
\u6700\u
5C0F
\u5305\u
88C5
\u6570\u
91CF[{0}]
\u
8F93
\u5165\u9519\u
8BEF
smfcore.momo.newBarcodeContentError
=
\u
83B7
\u
53D6
\u
65B0
\u7684\u6761\u7801\u5185\u
5BB9
\u5931\u
8D25[{0}]
smfcore.momo.newBarcodeContentError
=
\u
83B7
\u
53D6
\u
65B0
\u7684\u6761\u7801\u5185\u
5BB9
\u5931\u
8D25[{0}]
smfcore.splitContainer.error
=
\u
62C6
\u5305\u
901A
\u
77E5
\u5931\u
8D25[{0}]
smfcore.splitContainer.error
=
\u
62C6
\u5305\u
901A
\u
77E5
\u5931\u
8D25[{0}]
smfcore.noValidInList
=
[{0}]
\u5165\u
5E93
\u5355\u
4E2D
\u
672A
\u
627E
\u5230\u
8BE5
\u7269\u6599
\ No newline at end of file
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论