Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit ee527035
由
sunke
编写于
2021-12-17 14:09:42 +0800
浏览文件
选项
浏览文件
标签
下载
差异文件
Merge remote-tracking branch 'origin/master'
2 个父辈
ae1e0bad
657398a6
隐藏空白字符变更
内嵌
并排
正在显示
52 个修改的文件
包含
1192 行增加
和
991 行删除
src/main/java/com/neotel/smfcore/common/csv/CsvReader.java
src/main/java/com/neotel/smfcore/common/exception/ValidateException.java
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/common/utils/FileUtil.java
src/main/java/com/neotel/smfcore/common/utils/UserCodeUtil.java
src/main/java/com/neotel/smfcore/core/barcode/bean/BarcodeRule.java
src/main/java/com/neotel/smfcore/core/barcode/rest/BarcodeController.java
src/main/java/com/neotel/smfcore/core/barcode/rest/ComponentController.java
src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/BarcodeManagerImpl.java
src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/ComponentManagerImpl.java
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/SensorShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/SpBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/language/rest/LanguageMsgController.java
src/main/java/com/neotel/smfcore/core/language/rest/LanguageSetController.java
src/main/java/com/neotel/smfcore/core/language/service/bean/LanguageInfo.java
src/main/java/com/neotel/smfcore/core/language/service/nanager/impl/LanguageMsgManagerImpl.java
src/main/java/com/neotel/smfcore/core/language/service/po/LanguageMsg.java
src/main/java/com/neotel/smfcore/core/language/util/MessageUtils.java
src/main/java/com/neotel/smfcore/core/msd/rest/MSDController.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/storage/rest/LabelController.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialBoxController.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialController.java
src/main/java/com/neotel/smfcore/core/storage/rest/StorageController.java
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/LabelManagerImpl.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/core/system/rest/ClientSettingsController.java
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
src/main/java/com/neotel/smfcore/core/system/util/DevicesStatusUtil.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/hella/handler/HellaServiceHandler.java
src/main/java/com/neotel/smfcore/security/rest/GroupController.java
src/main/java/com/neotel/smfcore/security/rest/MenuController.java
src/main/java/com/neotel/smfcore/security/rest/RoleController.java
src/main/java/com/neotel/smfcore/security/rest/UserController.java
src/main/java/com/neotel/smfcore/security/service/UserDetailsServiceImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/GroupManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/MenuManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/RoleManagerImpl.java
src/main/java/com/neotel/smfcore/security/service/manager/impl/UserManagerImpl.java
src/main/resources/messages.properties
src/main/resources/messages_en_US.properties
src/main/resources/messages_ja_JP.properties
src/main/resources/messages_zh_CN.properties
src/main/resources/messages_zh_TW.properties
src/main/java/com/neotel/smfcore/common/csv/CsvReader.java
查看文件 @
ee52703
...
...
@@ -266,7 +266,7 @@ public class CsvReader {
if
(
index
==
-
1
){
log
.
info
(
"未包含【"
+
titleName
+
"】或【"
+
titleNameEn
+
"】列"
);
// throw new ValidateException("必须包含["+titleNameEn+"]列");
throw
new
ValidateException
(
"smfco
d
e.columnNotExist"
,
"必须包含[{0}列"
,
new
String
[]{
titleNameEn
});
throw
new
ValidateException
(
"smfco
r
e.columnNotExist"
,
"必须包含[{0}列"
,
new
String
[]{
titleNameEn
});
}
return
index
;
}
...
...
src/main/java/com/neotel/smfcore/common/exception/ValidateException.java
查看文件 @
ee52703
...
...
@@ -3,6 +3,8 @@ package com.neotel.smfcore.common.exception;
import
lombok.Data
;
import
org.springframework.http.HttpStatus
;
import
java.text.MessageFormat
;
import
static
org
.
springframework
.
http
.
HttpStatus
.
BAD_REQUEST
;
/**
...
...
@@ -25,10 +27,10 @@ public class ValidateException extends RuntimeException{
}
public
ValidateException
(
String
msgKey
,
String
defMsg
,
String
[]
msgParam
){
super
(
defMsg
);
super
(
defMsg
=
MessageFormat
.
format
(
defMsg
,
msgParam
)
);
this
.
msgKey
=
msgKey
;
this
.
msgParam
=
msgParam
;
this
.
defaultMsg
=
defMsg
;
this
.
defaultMsg
=
defMsg
;
}
public
ValidateException
(
HttpStatus
status
,
String
msg
){
...
...
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
ee52703
...
...
@@ -71,7 +71,7 @@ public class DataInitManager {
role
=
roleManager
.
save
(
role
);
log
.
info
(
"创建默认角色:"
+
role
.
toString
());
admin
=
new
User
(
userName
,
"admin@qq.com"
,
"zh"
,
role
.
getId
(),
"$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa"
,
true
,
true
,
new
Date
(),
groupIds
,
""
);
admin
=
new
User
(
userName
,
"admin@qq.com"
,
"zh
-CN
"
,
role
.
getId
(),
"$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa"
,
true
,
true
,
new
Date
(),
groupIds
,
""
);
userManager
.
save
(
admin
);
log
.
info
(
"创建默认用户:"
+
admin
.
toString
());
...
...
@@ -204,6 +204,14 @@ public class DataInitManager {
Menu
msdSetting
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"msdSetting"
,
"MSD设置"
,
1
,
"msdSetting"
,
"neolight/msdSetting/index"
,
""
,
0
,
"MSDSet"
);
menus
.
addAll
(
createMenus
(
msd
,
msdManage
,
msdData
,
msdSetting
));
Menu
solderPaste
=
Menu
.
CreatePMenu
(
"锡膏管理"
,
20
,
"solderPaste"
,
2
,
"sMana"
);
Menu
solderPasteKanban
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"solderPasteKanban"
,
"设备概览"
,
1
,
"solderPasteKanban"
,
"neolight/solderPasteKanban/index"
,
""
,
0
,
"sKanban"
);
Menu
solderPasteManage
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"solderPasteManage"
,
"库存"
,
1
,
"solderPasteManage"
,
"neolight/solderPasteManage/index"
,
""
,
0
,
"solder"
);
Menu
solderPasteData
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"solderPasteData"
,
"追溯性"
,
1
,
"solderPasteData"
,
"neolight/solderPasteData/index"
,
""
,
0
,
"sData"
);
Menu
solderPasteSetting
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"solderPasteSetting"
,
"设置"
,
1
,
"solderPasteSetting"
,
"neolight/solderPasteSetting/index"
,
""
,
0
,
"system"
);
menus
.
addAll
(
createMenus
(
solderPaste
,
solderPasteKanban
,
solderPasteManage
,
solderPasteData
,
solderPasteSetting
));
//物料管理:元器件管理,条形码管理
Menu
pMenuWl
=
Menu
.
CreatePMenu
(
"档案管理"
,
30
,
"materiel "
,
2
,
"BOM"
);
Menu
menucom
=
new
Menu
(
new
ArrayList
<
Menu
>(),
1
,
"component:list"
,
"元器件"
,
1
,
"componentParts"
,
"parts/component/index"
,
""
,
0
,
"server"
);
...
...
src/main/java/com/neotel/smfcore/common/utils/FileUtil.java
查看文件 @
ee52703
...
...
@@ -255,7 +255,7 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
// 1M
int
len
=
1024
*
1024
;
if
(
size
>
(
maxSize
*
len
))
{
throw
new
ValidateException
(
"smfco
d
e.fileToLong"
,
"文件超出规定大小"
);
throw
new
ValidateException
(
"smfco
r
e.fileToLong"
,
"文件超出规定大小"
);
}
}
...
...
src/main/java/com/neotel/smfcore/common/utils/UserCodeUtil.java
查看文件 @
ee52703
...
...
@@ -62,7 +62,7 @@ public class UserCodeUtil {
if
(
index
==
-
1
){
log
.
info
(
"未包含【"
+
titleName
+
"】或【"
+
titleNameEn
+
"】列"
);
// throw new ValidateException("必须包含["+titleNameEn+"]列");
throw
new
ValidateException
(
"smfco
d
e.columnNotExist"
,
"必须包含[{0}列"
,
new
String
[]{
titleNameEn
});
throw
new
ValidateException
(
"smfco
r
e.columnNotExist"
,
"必须包含[{0}列"
,
new
String
[]{
titleNameEn
});
}
return
index
;
}
...
...
src/main/java/com/neotel/smfcore/core/barcode/bean/BarcodeRule.java
查看文件 @
ee52703
...
...
@@ -497,7 +497,7 @@ public class BarcodeRule {
}
codeBean
.
setCodeStr
(
codeStr
);
if
(!
isValidRule
()){
codeBean
.
setError
(
"smfco
d
e.error.barcode.noRule"
,
"解析规则未定义"
);
codeBean
.
setError
(
"smfco
r
e.error.barcode.noRule"
,
"解析规则未定义"
);
return
codeBean
;
}
String
[]
codeArr
=
new
String
[]{
codeStr
};
...
...
@@ -506,7 +506,7 @@ public class BarcodeRule {
//条码与规则长度对应不上
if
(
codeArr
.
length
!=
length
){
log
.
info
(
"条码["
+
codeStr
+
"]与规则【"
+
ruleStr
+
"】长度不同"
);
codeBean
.
setError
(
"smfco
d
e.error.barcode.wrongLength"
,
new
String
[]{
codeStr
},
"条码[{0}]长度错误"
);
codeBean
.
setError
(
"smfco
r
e.error.barcode.wrongLength"
,
new
String
[]{
codeStr
},
"条码[{0}]长度错误"
);
return
codeBean
;
}
else
{
codeArr
=
codeStr
.
split
(
separator
,
length
);
...
...
@@ -525,7 +525,7 @@ public class BarcodeRule {
if
(
Strings
.
isNullOrEmpty
(
reelId
)){
log
.
info
(
"条码解析失败,未找到RI字段"
);
codeBean
.
setError
(
"smfco
d
e.error.barcode.noField"
,
new
String
[]{
"RI"
},
"条码解析失败,未找到{0}字段"
);
codeBean
.
setError
(
"smfco
r
e.error.barcode.noField"
,
new
String
[]{
"RI"
},
"条码解析失败,未找到{0}字段"
);
return
codeBean
;
}
...
...
@@ -533,7 +533,7 @@ public class BarcodeRule {
if
(
Strings
.
isNullOrEmpty
(
partNumber
)){
log
.
info
(
"条码解析失败,未找到PN字段"
);
codeBean
.
setError
(
"smfco
d
e.error.barcode.noField"
,
new
String
[]{
"PN"
},
"条码解析失败,未找到{0}字段"
);
codeBean
.
setError
(
"smfco
r
e.error.barcode.noField"
,
new
String
[]{
"PN"
},
"条码解析失败,未找到{0}字段"
);
return
codeBean
;
}
if
(
batch_item
.
hasThisField
()){
...
...
@@ -545,7 +545,7 @@ public class BarcodeRule {
quantity
=
quantity_item
.
getIntValue
(
codeArr
);
if
(
quantity
==
-
1
){
log
.
info
(
"条码解析失败,未找到QTY 字段"
);
codeBean
.
setError
(
"smfco
d
e.error.barcode.noField"
,
new
String
[]{
"QTY"
},
"条码解析失败,未找到{0}字段"
);
codeBean
.
setError
(
"smfco
r
e.error.barcode.noField"
,
new
String
[]{
"QTY"
},
"条码解析失败,未找到{0}字段"
);
return
codeBean
;
}
}
...
...
@@ -553,7 +553,7 @@ public class BarcodeRule {
Date
produceDate
=
produceDate_item
.
getDateValue
(
codeArr
);
if
(
produceDate_item
.
hasThisField
()
&&
produceDate
==
null
){
log
.
info
(
"条码解析失败,PRODATE字段不合规则"
);
codeBean
.
setError
(
"smfco
d
e.error.barcode.noField"
,
new
String
[]{
"PRODATE"
},
"条码解析失败,未找到{0}字段"
);
codeBean
.
setError
(
"smfco
r
e.error.barcode.noField"
,
new
String
[]{
"PRODATE"
},
"条码解析失败,未找到{0}字段"
);
return
codeBean
;
}
Date
expireDate
=
expireDate_item
.
getDateValue
(
codeArr
);
...
...
src/main/java/com/neotel/smfcore/core/barcode/rest/BarcodeController.java
查看文件 @
ee52703
...
...
@@ -84,7 +84,7 @@ public class BarcodeController {
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
BarcodeDto
resources
)
{
Barcode
barcode
=
barcodeMapper
.
toEntity
(
resources
);
if
(
barcode
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
barcodeManager
.
saveBarcode
(
barcode
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
...
...
@@ -97,7 +97,7 @@ public class BarcodeController {
List
<
Barcode
>
barcodes
=
new
ArrayList
<
Barcode
>();
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
}
barcodeManager
.
deleteBarcodes
(
ids
);
...
...
@@ -117,10 +117,10 @@ public class BarcodeController {
@PreAuthorize
(
"@el.check('barcode')"
)
public
ResponseEntity
<
Object
>
updateRules
(
@Validated
@RequestBody
List
<
String
>
codeRules
)
{
if
(
codeRules
.
isEmpty
()){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"codeRuleList"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"codeRuleList"
}
);
}
if
(
codeRules
.
size
()>
10
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"codeRuleList"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"codeRuleList"
}
);
}
Settings
settings
=
dataCache
.
getSettings
();
settings
.
setCodeRuleList
(
codeRules
);
...
...
@@ -135,7 +135,7 @@ public class BarcodeController {
String
image
=
"csv"
;
String
fileType
=
FileUtil
.
getExtensionName
(
uploadFile
.
getOriginalFilename
());
if
(
fileType
!=
null
&&
!
image
.
contains
(
fileType
)){
throw
new
ValidateException
(
"smfco
d
e.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
throw
new
ValidateException
(
"smfco
r
e.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
}
File
folder
=
new
File
(
properties
.
getPath
(),
"pos"
);
File
file
=
FileUtil
.
upload
(
uploadFile
,
folder
.
getAbsolutePath
());
...
...
src/main/java/com/neotel/smfcore/core/barcode/rest/ComponentController.java
查看文件 @
ee52703
...
...
@@ -76,7 +76,7 @@ public class ComponentController {
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
ComponentDto
resources
)
{
Component
component
=
componentMapper
.
toEntity
(
resources
);
if
(
component
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
componentManager
.
saveComponent
(
component
);
// //修改元器件时更新storagePos中的数据
...
...
@@ -97,7 +97,7 @@ public class ComponentController {
List
<
Component
>
Components
=
new
ArrayList
<
Component
>();
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
}
componentManager
.
deleteComponents
(
ids
);
...
...
src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/BarcodeManagerImpl.java
查看文件 @
ee52703
...
...
@@ -109,7 +109,7 @@ public class BarcodeManagerImpl implements IBarcodeManager {
//readID不能重复
Barcode
data
=
barcodeDao
.
findOne
(
query
);
if
(
data
!=
null
){
throw
new
ValidateException
(
"smfco
d
e.codeExist"
,
"条码["
+
resources
.
getBarcode
()+
"]已存在"
);
throw
new
ValidateException
(
"smfco
r
e.codeExist"
,
"条码["
+
resources
.
getBarcode
()+
"]已存在"
);
}
if
(
resources
.
getProvider
()==
null
){
...
...
@@ -177,19 +177,19 @@ public class BarcodeManagerImpl implements IBarcodeManager {
protected
void
validateSave
(
Barcode
barcode
)
throws
ValidateException
{
if
(
barcode
.
getBarcode
()==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"barcode"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"barcode"
}
);
// throw new ValidateException("barcode.error.empty");
}
if
(
barcode
.
getPartNumber
()==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"partNumber"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"partNumber"
}
);
// throw new ValidateException("["+barcode.getBarcode()+"]barcode.error.partNumber.empty");
}
if
(
barcode
.
getBatch
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"batch"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"batch"
}
);
// throw new ValidateException("批次不能为空");
}
if
(
barcode
.
getAmount
()
<
0
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"amout"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"amout"
}
);
// throw new ValidateException("["+barcode.getBarcode()+"]barcode.error.amount.negative" );
}
if
(!
validateUnique
(
barcode
))
{
...
...
src/main/java/com/neotel/smfcore/core/barcode/service/manager/impl/ComponentManagerImpl.java
查看文件 @
ee52703
...
...
@@ -126,7 +126,7 @@ public class ComponentManagerImpl implements IComponentManager {
public
Component
saveComponent
(
Component
resources
)
{
if
(
resources
.
getPartNumber
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"partNumber"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"partNumber"
}
);
// throw new BadRequestException("料号不能为空");
}
if
(
resources
.
getProvider
()==
null
){
...
...
@@ -153,7 +153,7 @@ public class ComponentManagerImpl implements IComponentManager {
}
Component
com
=
componentDao
.
findOne
(
new
Query
(
c
));
if
(
com
!=
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"partNumber"
,
resources
.
getPartNumber
()});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"partNumber"
,
resources
.
getPartNumber
()});
// throw new BadRequestException("料号["+resources.getPartNumber()+"]已存在");
}
...
...
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
查看文件 @
ee52703
...
...
@@ -55,7 +55,7 @@ public class CodeResolve {
if
(
barcodeRuleList
==
null
||
barcodeRuleList
.
isEmpty
()){
CodeBean
codeBean
=
new
CodeBean
();
codeBean
.
setBarcode
(
null
);
codeBean
.
setError
(
"smfco
d
e.error.barcode.noRules"
,
"解析规则未定义"
);
codeBean
.
setError
(
"smfco
r
e.error.barcode.noRules"
,
"解析规则未定义"
);
codeBean
.
setCodeStr
(
barcodeItemStr
);
return
codeBean
;
}
...
...
@@ -195,7 +195,7 @@ public class CodeResolve {
if
(
component
==
null
){
log
.
info
(
"档案["
+
barcodeFromRule
.
getPartNumber
()+
"]不存在"
);
// throw new ValidateException("component.error.notExist",new String[]{barcodeFromRule.getPartNumber()});
throw
new
ValidateException
(
"smfco
d
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"component"
,
barcodeFromRule
.
getPartNumber
()});
throw
new
ValidateException
(
"smfco
r
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"component"
,
barcodeFromRule
.
getPartNumber
()});
}
codeBeanFromRule
.
setShowImg
(
component
.
getShowImg
());
...
...
@@ -219,21 +219,21 @@ public class CodeResolve {
}
}
catch
(
ValidateException
ve
){
//档案不存在
codeBeanFromRule
.
setError
(
"smfco
d
e.error.barcode.pnNotExist"
,
new
String
[]{
barcodeFromRule
.
getPartNumber
()},
"档案 {0} 不存在"
);
codeBeanFromRule
.
setError
(
"smfco
r
e.error.barcode.pnNotExist"
,
new
String
[]{
barcodeFromRule
.
getPartNumber
()},
"档案 {0} 不存在"
);
log
.
warn
(
"档案"
+
barcodeFromRule
.
getPartNumber
()+
"不存在"
);
}
//解析成功了,直接返回
return
codeBeanFromRule
;
}
else
{
//在数据库中不存在,且未解析成功,用其他规则再解析
codeBeanFromRule
.
setError
(
"smfco
d
e.error.barcode.invalid"
,
new
String
[]{
barcodeItemStr
},
"{0}不是有效的条码"
);
codeBeanFromRule
.
setError
(
"smfco
r
e.error.barcode.invalid"
,
new
String
[]{
barcodeItemStr
},
"{0}不是有效的条码"
);
}
}
if
(
codeBeanFromRule
==
null
){
codeBeanFromRule
=
new
CodeBean
();
codeBeanFromRule
.
setBarcode
(
null
);
codeBeanFromRule
.
setError
(
"smfco
d
e.error.barcode.invalid"
,
new
String
[]{
barcodeItemStr
},
"{0}不是有效的条码"
);
codeBeanFromRule
.
setError
(
"smfco
r
e.error.barcode.invalid"
,
new
String
[]{
barcodeItemStr
},
"{0}不是有效的条码"
);
codeBeanFromRule
.
setCodeStr
(
barcodeItemStr
);
return
codeBeanFromRule
;
}
...
...
@@ -333,7 +333,7 @@ public class CodeResolve {
if
(
barcode
==
null
){
barcode
=
barcodeFromRule
;
}
else
{
throw
new
ValidateException
(
"smfco
d
e.error.barcode.many"
,
"找到多个有效的条码"
,
new
String
[]{
codeStr
});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.many"
,
"找到多个有效的条码"
,
new
String
[]{
codeStr
});
}
}
else
{
errorMsg
=
codeBean
.
getError
();
...
...
@@ -341,7 +341,7 @@ public class CodeResolve {
}
if
(
barcode
==
null
){
throw
new
ValidateException
(
"smfco
d
e.error.barcode.noValidCode"
,
"无效的条码"
,
new
String
[]{
codeBeans
.
size
()+
":"
,
codeStr
});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.noValidCode"
,
"无效的条码"
,
new
String
[]{
codeBeans
.
size
()+
":"
,
codeStr
});
}
return
barcode
;
}
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
ee52703
...
...
@@ -160,7 +160,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
//同条码,但不是同料仓
log
.
error
(
"条码["
+
barcodeSave
.
getBarcode
()
+
"]任务正在执行,但任务料仓为:"
+
task
.
getStorageId
()
+
" 请求料仓为:"
+
task
.
getStorageId
());
//throw new ValidateException("条码["+barcodeSave.getBarcode()+"]任务正在执行");
throw
new
ValidateException
(
"smfco
d
e.error.barcode.executing"
,
"条码[{0}}]任务正在执行"
,
new
String
[]{
barcodeSave
.
getBarcode
()});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.executing"
,
"条码[{0}}]任务正在执行"
,
new
String
[]{
barcodeSave
.
getBarcode
()});
}
}
...
...
@@ -176,19 +176,19 @@ public class BaseDeviceHandler implements IDeviceHandler {
storagePos
=
storagePosManager
.
getByPosName
(
posName
);
if
(
storagePos
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.error.pos.notExist"
,
"库位[{0}]不存在,无法入库"
,
new
String
[]{
posName
});
throw
new
ValidateException
(
"smfco
r
e.error.pos.notExist"
,
"库位[{0}]不存在,无法入库"
,
new
String
[]{
posName
});
}
if
(!
storage
.
getId
().
equals
(
storagePos
.
getStorageId
()))
{
throw
new
ValidateException
(
"smfco
d
e.error.pos.wrong"
,
"库位[{0}]与料仓[{1}}]不匹配,无法入库"
,
new
String
[]{
posName
,
storage
.
getCid
()});
throw
new
ValidateException
(
"smfco
r
e.error.pos.wrong"
,
"库位[{0}]与料仓[{1}}]不匹配,无法入库"
,
new
String
[]{
posName
,
storage
.
getCid
()});
}
if
(
storagePos
.
getBarcode
()
!=
null
)
{
throw
new
ValidateException
(
"smfco
d
e.error.pos.hasReel"
,
"库位[{0}]中已有物料,无法入库"
,
new
String
[]{
posName
});
throw
new
ValidateException
(
"smfco
r
e.error.pos.hasReel"
,
"库位[{0}]中已有物料,无法入库"
,
new
String
[]{
posName
});
}
if
(!
storage
.
canPutInPos
(
barcodeSave
.
getPlateSize
(),
barcodeSave
.
getHeight
(),
storagePos
.
getW
(),
storagePos
.
getH
()))
{
String
reelSize
=
barcodeSave
.
getPlateSize
()
+
"x"
+
barcodeSave
.
getHeight
();
String
posSize
=
storagePos
.
getW
()
+
"x"
+
storagePos
.
getH
();
throw
new
ValidateException
(
"smfco
d
e.error.pos.sizeNotMatch"
,
"料盘尺寸[{0}}]与库位{1}尺寸[{2}]不符,无法入库"
,
new
String
[]{
reelSize
,
posName
,
posSize
});
throw
new
ValidateException
(
"smfco
r
e.error.pos.sizeNotMatch"
,
"料盘尺寸[{0}}]与库位{1}尺寸[{2}]不符,无法入库"
,
new
String
[]{
reelSize
,
posName
,
posSize
});
}
}
else
{
...
...
@@ -265,7 +265,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
//先查找空闲 BOX同尺寸的,如果找不到,再查找可入库 BOX 同尺寸或比盘尺寸大的仓位
StatusBean
statusBean
=
DevicesStatusUtil
.
getStatusBean
(
storageCid
);
if
(
statusBean
==
null
)
{
//当前料仓不可用
throw
new
ValidateException
(
"smfco
d
e.error.storage.offline"
,
"料仓[{0}]离线"
,
new
String
[]{
storageCid
});
throw
new
ValidateException
(
"smfco
r
e.error.storage.offline"
,
"料仓[{0}]离线"
,
new
String
[]{
storageCid
});
}
//还需要排除掉正在队列里的仓位
StoragePos
storagePos
=
null
;
...
...
@@ -312,7 +312,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
public
Barcode
verifyBarcodePutIn
(
List
<
Storage
>
storageList
,
Barcode
barcodeSave
)
throws
ValidateException
{
if
(
barcodeSave
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.error.barcode.invalid"
,
"条码无效"
,
new
String
[]{
""
});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.invalid"
,
"条码无效"
,
new
String
[]{
""
});
}
Date
expireDate
=
barcodeSave
.
getExpireDate
();
...
...
@@ -332,11 +332,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
if
(!
canPutIn
){
throw
new
ValidateException
(
"smfco
d
e.error.barcode.wrongSize"
,
"尺寸[{0}]不符"
,
new
String
[]{
w
+
"x"
+
h
});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.wrongSize"
,
"尺寸[{0}]不符"
,
new
String
[]{
w
+
"x"
+
h
});
}
if
(
barcodeSave
.
getAmount
()
<=
0
)
{
throw
new
ValidateException
(
"smfco
d
e.error.barcode.wrongQty"
,
"条码[{0}]对应的数量<=0为: {1}"
,
new
String
[]{
barcodeSave
.
getBarcode
(),
barcodeSave
.
getAmount
()
+
""
});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.wrongQty"
,
"条码[{0}]对应的数量<=0为: {1}"
,
new
String
[]{
barcodeSave
.
getBarcode
(),
barcodeSave
.
getAmount
()
+
""
});
}
// if(barcodeSave.getPlateSize() <=0 || barcodeSave.getHeight() <= 0){
...
...
@@ -359,7 +359,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
return
barcodeSave
;
}
}
throw
new
ValidateException
(
"smfco
d
e.error.barcode.taskNotEnd"
,
"料盘[{0}]的操作未完成,无法执行入库操作"
,
new
String
[]{
barcodeSave
.
getBarcode
()});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.taskNotEnd"
,
"料盘[{0}]的操作未完成,无法执行入库操作"
,
new
String
[]{
barcodeSave
.
getBarcode
()});
}
}
}
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLShelfHandler.java
查看文件 @
ee52703
...
...
@@ -141,11 +141,11 @@ public class NLShelfHandler extends BaseDeviceHandler {
private
void
canBarcodePutInPos
(
StoragePos
pos
,
Barcode
barcode
)
throws
ValidateException
{
if
(
pos
.
getBarcode
()
!=
null
){
throw
new
ValidateException
(
"smfco
d
e.shelf.nextPos.hasReel"
,
"库位[{0}]已有物料,请重新扫描库位码"
,
new
String
[]{
pos
.
getPosName
()});
throw
new
ValidateException
(
"smfco
r
e.shelf.nextPos.hasReel"
,
"库位[{0}]已有物料,请重新扫描库位码"
,
new
String
[]{
pos
.
getPosName
()});
}
Collection
<
String
>
excludePosIds
=
taskService
.
excludePosIds
();
if
(
excludePosIds
.
contains
(
pos
.
getId
())){
throw
new
ValidateException
(
"smfco
d
e.shelf.nextPos.hasTask"
,
"库位[{0}]已有任务,请重新扫描库位码"
,
new
String
[]{
pos
.
getPosName
()});
throw
new
ValidateException
(
"smfco
r
e.shelf.nextPos.hasTask"
,
"库位[{0}]已有任务,请重新扫描库位码"
,
new
String
[]{
pos
.
getPosName
()});
}
// if(barcode != null){
// Storage storage = dataCache.getStorageById(pos.getStorageId());
...
...
@@ -155,7 +155,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
// if(!storage.canPutInPos(barcode.getPlateSize(),barcode.getHeight(), pos.getW(), pos.getH())){
// String reelSize = barcode.getPlateSize() + "x" + barcode.getHeight();
// String posSize = pos.getW() + "x" + pos.getH();
// throw new ValidateException("smfco
d
e.shelf.nextPos.wrongSize","库位["+pos.getPosName()+"]尺寸["+posSize+"]与料盘尺寸["+reelSize+"]不符,请重新扫描库位码",new String[]{pos.getPosName(),posSize, reelSize});
// throw new ValidateException("smfco
r
e.shelf.nextPos.wrongSize","库位["+pos.getPosName()+"]尺寸["+posSize+"]与料盘尺寸["+reelSize+"]不符,请重新扫描库位码",new String[]{pos.getPosName(),posSize, reelSize});
// }
// }
}
...
...
@@ -174,16 +174,16 @@ public class NLShelfHandler extends BaseDeviceHandler {
String
ptoken
=
token
.
substring
(
token
.
length
()-
10
);
String
loginUser
=
SecurityUtils
.
getLoginUsername
();
if
(
ObjectUtils
.
isEmpty
(
code
))
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"code"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"code"
});
}
if
(
groupId
==
null
&&
storageId
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
});
}
Storage
currentStorage
=
null
;
if
(
groupId
==
null
&&
storageId
!=
null
)
{
currentStorage
=
dataCache
.
getStorageById
(
storageId
);
if
(
currentStorage
==
null
||
!
currentStorage
.
isNLShelf
())
{
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.notFound"
,
"未找到料架"
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.notFound"
,
"未找到料架"
);
}
if
(
currentStorage
!=
null
)
{
groupId
=
currentStorage
.
getGroupId
();
...
...
@@ -201,21 +201,21 @@ public class NLShelfHandler extends BaseDeviceHandler {
//判断库位是否是对应设备或者租
if
(
currentStorage
!=
null
)
{
if
(
!
pos
.
getStorageId
().
equals
(
storageId
))
{
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.pos.notInStorage"
,
"料架[{0}]中未找到库位[{1}]"
,
new
String
[]{
currentStorage
.
getName
(),
pos
.
getPosName
()});
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.pos.notInStorage"
,
"料架[{0}]中未找到库位[{1}]"
,
new
String
[]{
currentStorage
.
getName
(),
pos
.
getPosName
()});
}
}
else
{
currentStorage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
currentStorage
==
null
||
!
currentStorage
.
isNLShelf
())
{
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.notFound"
,
"未找到料架"
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.notFound"
,
"未找到料架"
);
}
if
(
currentStorage
.
getGroupId
()
!=
groupId
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.pos.notInGroup"
,
"组中未找到库位[{0}]"
,
new
String
[]{
pos
.
getPosName
()});
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.pos.notInGroup"
,
"组中未找到库位[{0}]"
,
new
String
[]{
pos
.
getPosName
()});
}
}
//扫描的为库位条码,先关掉上一个库位灯, 当前库位中没有物料的话点亮库位灯
closeLastPos
(
token
);
if
(
pos
.
getBarcode
()
!=
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.msg.hasReel"
,
"库位中[{0}]已有物料"
,
new
String
[]{
pos
.
getPosName
()});
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.msg.hasReel"
,
"库位中[{0}]已有物料"
,
new
String
[]{
pos
.
getPosName
()});
}
else
{
//设置上一个入库操作库位
openAndCloseLights
(
token
,
pos
,
putInColor
,
delayCloseTime
);
...
...
@@ -225,7 +225,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
operateBean
.
setNextPosId
(
null
);
shelfPutInBeanMap
.
put
(
token
,
operateBean
);
log
.
info
(
ptoken
+
":库位["
+
pos
.
getPosName
()
+
"]操作成功,请扫描要放入的物料"
);
return
ResultBean
.
newOkResult
(
"smfco
d
e.shelf.msg.tipScanReel"
,
"库位["
+
pos
.
getPosName
()
+
"]操作成功,请扫描要放入的物料"
,
new
String
[]{
pos
.
getPosName
()},
""
);
return
ResultBean
.
newOkResult
(
"smfco
r
e.shelf.msg.tipScanReel"
,
"库位["
+
pos
.
getPosName
()
+
"]操作成功,请扫描要放入的物料"
,
new
String
[]{
pos
.
getPosName
()},
""
);
}
}
else
{
//扫的是物料条码
...
...
@@ -246,7 +246,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
//5秒内同一个条码忽略
Date
usedDate
=
barcode
.
getUsedDate
();
if
(
usedDate
!=
null
&&
now
-
usedDate
.
getTime
()
<
5000
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.msg.fastop"
,
"条码操作频繁,请稍后再试"
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.msg.fastop"
,
"条码操作频繁,请稍后再试"
);
}
StoragePos
inPos
=
storagePosManager
.
getByBarcodeId
(
barcode
.
getId
());
...
...
@@ -256,15 +256,15 @@ public class NLShelfHandler extends BaseDeviceHandler {
for
(
DataLog
task
:
allTasks
)
{
if
(
task
.
isCheckOutTask
()
&&
task
.
getBarcode
()
!=
null
&&
task
.
getBarcode
().
equals
(
barcode
.
getBarcode
()))
{
// if(!sourceName.equalsIgnoreCase("All") && !sourceName.equals(task.getSourceName())){
// return ResultBean.newErrorResult(1,"smfco
d
e.shelf.error.orderError","任务与指定工单[{0}]不一致",new String[]{sourceName} );
// return ResultBean.newErrorResult(1,"smfco
r
e.shelf.error.orderError","任务与指定工单[{0}]不一致",new String[]{sourceName} );
// }
taskService
.
addTaskToFinished
(
inPos
,
null
,
loginUser
);
opPosLight
(
"close"
,
inPos
,
null
);
log
.
info
(
barcode
.
getBarcode
()
+
" 出库完成, 库位["
+
inPos
.
getPosName
()
+
"]灭灯"
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.msg.outConfirm"
,
"出库完成, 库位[{0}]灭灯"
,
new
String
[]{
inPos
.
getPosName
()}
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.msg.outConfirm"
,
"出库完成, 库位[{0}]灭灯"
,
new
String
[]{
inPos
.
getPosName
()}
);
}
}
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.msg.noTask"
,
"操作失败,已在库位[{0}]中,未找到对应的出库任务"
,
new
String
[]{
inPos
.
getPosName
()});
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.msg.noTask"
,
"操作失败,已在库位[{0}]中,未找到对应的出库任务"
,
new
String
[]{
inPos
.
getPosName
()});
}
//入库
...
...
@@ -275,7 +275,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
String
operatePosId
=
operateBean
.
getNextPosId
();
if
(
Strings
.
isNullOrEmpty
(
operatePosId
))
{
log
.
info
(
ptoken
+
":条码["
+
code
+
"],请先扫描库位码"
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.shelf.msg.scanPos"
,
"请先扫描库位码"
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.shelf.msg.scanPos"
,
"请先扫描库位码"
);
}
else
{
//有下一个库位
StoragePos
currentPos
=
storagePosManager
.
get
(
String
.
valueOf
(
operatePosId
));
...
...
@@ -301,7 +301,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
shelfPutInBeanMap
.
put
(
token
,
operateBean
);
log
.
info
(
ptoken
+
":条码["
+
code
+
"]入库操作成功,请放入库位 ["
+
currentPos
.
getPosName
()
+
"],下一个库位号:"
+
nextPosId
);
return
ResultBean
.
newOkResult
(
"smfco
d
e.shelf.msg.inOk"
,
"操作成功,请放入库位["
+
currentPos
.
getPosName
()
+
"]"
,
new
String
[]{
currentPos
.
getPosName
()},
""
);
return
ResultBean
.
newOkResult
(
"smfco
r
e.shelf.msg.inOk"
,
"操作成功,请放入库位["
+
currentPos
.
getPosName
()
+
"]"
,
new
String
[]{
currentPos
.
getPosName
()},
""
);
}
}
...
...
@@ -327,7 +327,7 @@ public class NLShelfHandler extends BaseDeviceHandler {
}
shelfPutInBeanMap
.
put
(
token
,
operateBean
);
log
.
info
(
ptoken
+
":条码["
+
code
+
"]入库操作成功,请放入库位 ["
+
opPos
.
getPosName
()+
"],下一个库位号:"
+
nextPosId
);
return
ResultBean
.
newOkResult
(
"smfco
d
e.shelf.msg.inOk"
,
"操作成功,请放入库位["
+
opPos
.
getPosName
()+
"]"
,
new
String
[]{
opPos
.
getPosName
()},
""
);
return
ResultBean
.
newOkResult
(
"smfco
r
e.shelf.msg.inOk"
,
"操作成功,请放入库位["
+
opPos
.
getPosName
()+
"]"
,
new
String
[]{
opPos
.
getPosName
()},
""
);
}
}
catch
(
ValidateException
e
)
{
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/SensorShelfHandler.java
查看文件 @
ee52703
...
...
@@ -71,10 +71,10 @@ public class SensorShelfHandler extends BaseDeviceHandler {
String
groupId
=
mapValues
.
get
(
"group"
);
String
storageId
=
mapValues
.
get
(
"storageId"
);
if
(
ObjectUtils
.
isEmpty
(
code
)){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"code"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"code"
});
}
if
(
groupId
==
null
&&
storageId
==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
});
}
if
(
groupId
==
null
&&
storageId
!=
null
){
Storage
storage
=
dataCache
.
getStorageById
(
storageId
);
...
...
@@ -127,7 +127,7 @@ public class SensorShelfHandler extends BaseDeviceHandler {
// CodeBean codeBean = codeResolve.resolveSingleCode(codeStr);
if
(
barcode
==
null
||
barcode
.
getBarcode
()
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.error.barcode.invalid"
,
"条码无效"
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.error.barcode.invalid"
,
"条码无效"
);
}
String
pn
=
barcode
.
getPartNumber
();
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/SpBoxHandler.java
查看文件 @
ee52703
...
...
@@ -133,7 +133,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
//同条码,但不是同料仓
log
.
error
(
"条码["
+
barcodeSave
.
getBarcode
()
+
"]任务正在执行,但任务料仓为:"
+
task
.
getStorageId
()
+
" 请求料仓为:"
+
task
.
getStorageId
());
//throw new ValidateException("条码["+barcodeSave.getBarcode()+"]任务正在执行");
throw
new
ValidateException
(
"smfco
d
e.error.barcode.executing"
,
"条码[{0}}]任务正在执行"
,
new
String
[]{
barcodeSave
.
getBarcode
()});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.executing"
,
"条码[{0}}]任务正在执行"
,
new
String
[]{
barcodeSave
.
getBarcode
()});
}
}
...
...
@@ -150,19 +150,19 @@ public class SpBoxHandler extends BaseDeviceHandler {
storagePos
=
storagePosManager
.
getByPosName
(
posName
);
if
(
storagePos
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.error.pos.notExist"
,
"库位【{0}】不存在,无法入库"
,
new
String
[]{
posName
});
throw
new
ValidateException
(
"smfco
r
e.error.pos.notExist"
,
"库位【{0}】不存在,无法入库"
,
new
String
[]{
posName
});
}
if
(!
storage
.
getId
().
equals
(
storagePos
.
getStorageId
()))
{
throw
new
ValidateException
(
"smfco
d
e.error.pos.wrong"
,
"库位【{0}】与料仓[{1}]不匹配,无法入库"
,
new
String
[]{
posName
,
storage
.
getCid
()});
throw
new
ValidateException
(
"smfco
r
e.error.pos.wrong"
,
"库位【{0}】与料仓[{1}]不匹配,无法入库"
,
new
String
[]{
posName
,
storage
.
getCid
()});
}
if
(
storagePos
.
getBarcode
()
!=
null
)
{
throw
new
ValidateException
(
"smfco
d
e.error.pos.hasReel"
,
"库位【{0}】中已有物料,无法入库"
,
new
String
[]{
posName
});
throw
new
ValidateException
(
"smfco
r
e.error.pos.hasReel"
,
"库位【{0}】中已有物料,无法入库"
,
new
String
[]{
posName
});
}
if
(!
storage
.
canPutInPos
(
barcodeSave
.
getPlateSize
(),
barcodeSave
.
getHeight
(),
storagePos
.
getW
(),
storagePos
.
getH
()))
{
String
reelSize
=
barcodeSave
.
getPlateSize
()
+
"x"
+
barcodeSave
.
getHeight
();
String
posSize
=
storagePos
.
getW
()
+
"x"
+
storagePos
.
getH
();
throw
new
ValidateException
(
"smfco
d
e.error.pos.sizeNotMatch"
,
"料盘尺寸[{0}]与库位{1}尺寸[{2}]不符,无法入库"
,
new
String
[]{
reelSize
,
posName
,
posSize
});
throw
new
ValidateException
(
"smfco
r
e.error.pos.sizeNotMatch"
,
"料盘尺寸[{0}]与库位{1}尺寸[{2}]不符,无法入库"
,
new
String
[]{
reelSize
,
posName
,
posSize
});
}
}
else
{
...
...
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
ee52703
...
...
@@ -10,6 +10,9 @@ import com.neotel.smfcore.common.utils.StringUtils;
import
com.neotel.smfcore.common.utils.YmlUpdateUtil
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.language.service.bean.LanguageInfo
;
import
com.neotel.smfcore.core.language.service.po.LanguageMsg
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
...
...
@@ -102,6 +105,15 @@ public class DataCache {
return
null
;
}
public
List
<
LanguageInfo
>
getLanguageList
(){
List
<
LanguageInfo
>
lanList
=
getCache
(
Constants
.
CACHE_languageType
);
if
(
lanList
==
null
||
lanList
.
size
()
<=
0
)
{
lanList
=
MessageUtils
.
getDefaultLanList
();
updateCache
(
Constants
.
CACHE_languageType
,
lanList
);
}
return
lanList
;
}
/**
* 更新缓存信息
*/
...
...
src/main/java/com/neotel/smfcore/core/language/rest/LanguageMsgController.java
查看文件 @
ee52703
...
...
@@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.core.device.util.DataCache
;
...
...
@@ -13,6 +12,7 @@ import com.neotel.smfcore.core.language.rest.bean.dto.LanguageResourceDto;
import
com.neotel.smfcore.core.language.rest.bean.mapstruct.LanguageMsgMapper
;
import
com.neotel.smfcore.core.language.rest.bean.query.LanguageMsgCriteria
;
import
com.neotel.smfcore.core.language.service.bean.Content
;
import
com.neotel.smfcore.core.language.service.bean.LanguageInfo
;
import
com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager
;
import
com.neotel.smfcore.core.language.service.po.LanguageMsg
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
...
...
@@ -54,18 +54,15 @@ public class LanguageMsgController {
@Autowired
DataCache
dataCache
;
public
List
<
String
>
getAllLanList
()
{
public
List
<
String
>
getAllLanList
()
{
List
<
String
>
lanList
=
dataCache
.
getCache
(
Constants
.
CACHE_languageType
);
if
(
lanList
==
null
||
lanList
.
size
()
<=
0
)
{
lanList
=
new
ArrayList
<>();
lanList
.
add
(
MessageUtils
.
ZH_CN
);
lanList
.
add
(
MessageUtils
.
ZH_TW
);
lanList
.
add
(
MessageUtils
.
EN_US
);
lanList
.
add
(
MessageUtils
.
JA_JP
);
dataCache
.
updateCache
(
Constants
.
CACHE_languageType
,
lanList
);
List
<
LanguageInfo
>
lanList
=
dataCache
.
getLanguageList
();
List
<
String
>
list
=
new
ArrayList
<>();
for
(
LanguageInfo
lan
:
lanList
)
{
list
.
add
(
lan
.
getLanCode
());
}
return
l
anL
ist
;
return
list
;
}
...
...
@@ -73,14 +70,15 @@ public class LanguageMsgController {
@PostMapping
(
value
=
"/upload"
)
public
ResultBean
upload
(
@RequestParam
MultipartFile
uploadFile
)
throws
Exception
{
// 验证文件上传的格式
String
smfco
d
eType
=
"properties"
;
String
smfco
r
eType
=
"properties"
;
String
smfclientType
=
"js"
;
String
csvType
=
"csv"
;
String
fileType
=
FileUtil
.
getExtensionName
(
uploadFile
.
getOriginalFilename
());
if
(
fileType
==
null
)
{
throw
new
ValidateException
(
"smfco
de.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
smfclientType
+
"/"
+
smfcod
eType
});
throw
new
ValidateException
(
"smfco
re.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
csvType
+
"/"
+
smfclientType
+
"/"
+
smfcor
eType
});
}
if
((!
smfclientType
.
contains
(
fileType
))
&&
!
smfco
de
Type
.
contains
(
fileType
))
{
throw
new
ValidateException
(
"smfco
de.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
smfclientType
+
"/"
+
smfcod
eType
});
if
((!
smfclientType
.
contains
(
fileType
))
&&
!
smfco
reType
.
contains
(
fileType
)
&&
!
csv
Type
.
contains
(
fileType
))
{
throw
new
ValidateException
(
"smfco
re.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
csvType
+
"/"
+
smfclientType
+
"/"
+
smfcor
eType
});
}
File
folder
=
new
File
(
properties
.
getPath
(),
"resource"
);
File
file
=
FileUtil
.
upload
(
uploadFile
,
folder
.
getAbsolutePath
());
...
...
@@ -90,12 +88,16 @@ public class LanguageMsgController {
String
lanType
=
getLanTypeByFileName
(
uploadFile
.
getOriginalFilename
());
if
(
smfclientType
.
contains
(
fileType
))
{
//客户端js文件处理
Map
<
String
,
String
>
proMap
=
readJsFile
(
file
);
Map
<
String
,
String
>
proMap
=
MessageUtils
.
readJsFile
(
file
);
resultMsg
=
ResourceUpload
(
uploadFile
.
getOriginalFilename
(),
proMap
,
lanType
,
"smfclient"
);
}
else
if
(
smfco
d
eType
.
contains
(
fileType
))
{
Map
<
String
,
String
>
proMap
=
MessageUtils
.
R
eadPropertiesFile
(
file
);
}
else
if
(
smfco
r
eType
.
contains
(
fileType
))
{
Map
<
String
,
String
>
proMap
=
MessageUtils
.
r
eadPropertiesFile
(
file
);
resultMsg
=
ResourceUpload
(
uploadFile
.
getOriginalFilename
(),
proMap
,
lanType
,
""
);
}
if
(
csvType
.
equals
(
fileType
)){
List
<
LanguageMsg
>
list
=
MessageUtils
.
readCsvFile
(
file
.
getAbsolutePath
(),
dataCache
.
getLanguageList
());
msgListUpload
(
list
);
}
return
ResultBean
.
newOkResult
(
resultMsg
);
}
...
...
@@ -118,6 +120,7 @@ public class LanguageMsgController {
query
.
addCriteria
(
Criteria
.
where
(
proName
).
exists
(
false
));
}
}
List
<
LanguageMsg
>
list
=
languageMsgManager
.
findByQuery
(
query
);
//下载
languageMsgManager
.
download
(
list
,
response
);
...
...
@@ -160,7 +163,7 @@ public class LanguageMsgController {
public
ResponseEntity
<
Object
>
update
(
@RequestBody
LanguageMsgDto
resources
)
{
LanguageMsg
msg
=
languageMsgMapper
.
toEntity
(
resources
);
if
(
msg
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
languageMsgManager
.
saveMsg
(
msg
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
...
...
@@ -172,7 +175,7 @@ public class LanguageMsgController {
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
}
languageMsgManager
.
deleteMsgs
(
ids
);
...
...
@@ -224,6 +227,7 @@ public class LanguageMsgController {
return
list
;
}
@ApiOperation
(
"客户端提交资源列表:只增加不修改"
)
@PostMapping
(
value
=
"/resource"
)
@AnonymousAccess
...
...
@@ -309,10 +313,10 @@ public class LanguageMsgController {
proMap
.
keySet
())
{
String
msgStr
=
proMap
.
get
(
key
);
LanguageMsg
msg
=
MessageUtils
.
getMsg
(
key
);
LanguageMsg
msg
=
MessageUtils
.
getMsg
(
type
,
key
);
//导入时只能新增不能修改
if
(
msg
==
null
)
{
msg
=
new
LanguageMsg
(
key
,
msgStr
,
"smfclient"
);
msg
=
new
LanguageMsg
(
key
,
msgStr
,
type
);
msg
.
setContent
(
lanCode
,
msgStr
);
newLanguageList
.
add
(
msg
);
}
else
{
...
...
@@ -320,6 +324,12 @@ public class LanguageMsgController {
// if (!oldMsg.equals(msgStr)) {
if
(
ObjectUtil
.
isEmpty
(
oldMsg
)){
msg
.
setContent
(
lanCode
,
msgStr
);
//内容默认更改为中文
if
(
lanCode
.
equals
(
MessageUtils
.
ZH_CN
)){
if
(!
msg
.
getMsg
().
equals
(
msgStr
)){
msg
.
setMsg
(
msgStr
);
}
}
updateLanguageList
.
add
(
msg
);
languageMsgManager
.
save
(
msg
);
MessageUtils
.
updateMsg
(
msg
);
...
...
@@ -335,138 +345,84 @@ public class LanguageMsgController {
MessageUtils
.
updateMsg
(
msg
);
}
}
log
.
info
(
"导入资源["
+
orgFileName
+
"]["
+
type
+
"]["
+
lanCode
+
"]共更新["
+
updateLanguageList
.
size
()
+
"]条资源,新增["
+
newLanguageList
.
size
()
+
"]条资源"
);
log
.
info
(
"导入资源["
+
orgFileName
+
"]["
+
type
+
"]["
+
lanCode
+
"]
,共["
+
proMap
.
size
()+
"]条数据,
共更新["
+
updateLanguageList
.
size
()
+
"]条资源,新增["
+
newLanguageList
.
size
()
+
"]条资源"
);
return
"ok"
;
}
private
void
msgListUpload
(
List
<
LanguageMsg
>
msgList
)
{
private
Map
<
String
,
String
>
readJsFile
(
File
file
){
Map
<
String
,
String
>
map
=
new
HashMap
<>();
List
<
LanguageMsg
>
newLanguageList
=
new
ArrayList
<>();
List
<
LanguageMsg
>
updateLanguageList
=
new
ArrayList
<>();
for
(
LanguageMsg
msg
:
msgList
)
{
try
(
FileInputStream
fis
=
new
FileInputStream
(
file
.
getPath
());
InputStreamReader
isr
=
new
InputStreamReader
(
fis
,
"UTF-8"
);
BufferedReader
br
=
new
BufferedReader
(
isr
)
)
{
String
line
;
//网友推荐更加简洁的写法
int
lineIndex
=-
1
;
String
currNodeName
=
""
;
while
((
line
=
br
.
readLine
())
!=
null
)
{
lineIndex
++;
// if(lineIndex==0){
// continue
;
// }
if
(
ObjectUtil
.
isEmpty
(
line
))
{
if
(
ObjectUtil
.
isEmpty
(
msg
.
getCode
()))
{
//code不能为空
continue
;
}
if
(
ObjectUtil
.
isEmpty
(
msg
.
getMsg
())){
//内容不能为空
continue
;
}
if
(
ObjectUtil
.
isEmpty
(
msg
.
getType
())){
//内容不能为空
continue
;
}
List
<
Content
>
contentList
=
new
ArrayList
<>()
;
for
(
Content
con
:
msg
.
getContentList
())
{
if
(
ObjectUtil
.
isEmpty
(
con
.
getLanCode
())
||
ObjectUtil
.
isEmpty
(
con
.
getMsg
()))
{
continue
;
}
if
(
line
.
contains
(
"{"
)){
if
(
line
.
contains
(
"="
)){
currNodeName
=
""
;
}
else
{
int
dendIndex
=
line
.
indexOf
(
':'
);
String
lineNode
=
line
.
substring
(
0
,
dendIndex
).
trim
();
if
(
ObjectUtil
.
isEmpty
(
currNodeName
)){
currNodeName
=
lineNode
;
}
else
{
//节点名称+
currNodeName
=
currNodeName
+
"."
+
lineNode
;
}
contentList
.
add
(
con
);
}
//判断是否是新增
LanguageMsg
oldMsg
=
MessageUtils
.
getMsg
(
msg
.
getType
(),
msg
.
getCode
());
if
(
oldMsg
==
null
){
newLanguageList
.
add
(
msg
);
}
else
{
boolean
isUpdate
=
false
;
//只新增不修改
List
<
String
>
allLanList
=
getAllLanList
();
for
(
String
lanType
:
allLanList
)
{
String
oldValue
=
oldMsg
.
getContent
(
lanType
);
if
(
ObjectUtil
.
isEmpty
(
oldValue
)){
oldMsg
.
setContent
(
lanType
,
msg
.
getContent
(
lanType
));
isUpdate
=
true
;
//内容默认更改为中文
if
(
lanType
.
equals
(
MessageUtils
.
ZH_CN
)){
if
(!
oldMsg
.
getMsg
().
equals
(
oldValue
)){
oldMsg
.
setMsg
(
oldValue
);
}
}
}
}
else
if
(
line
.
contains
(
"}"
)){
//节点名称-
if
(
currNodeName
.
contains
(
"."
)){
int
endIndex
=
currNodeName
.
lastIndexOf
(
"."
);
currNodeName
=
currNodeName
.
substring
(
0
,
endIndex
);
}
else
{
currNodeName
=
""
;
}
}
else
if
(
line
.
contains
(
":"
)){
if
(
line
.
endsWith
(
","
)){
line
=
line
.
substring
(
0
,
line
.
length
()-
1
);
}
String
[]
array
=
line
.
replace
(
"'"
,
""
).
replace
(
"\""
,
""
).
split
(
":"
);
if
(
array
.
length
==
2
){
String
linekey
=
array
[
0
].
trim
();
String
lineValue
=
array
[
1
].
trim
();
map
.
put
(
currNodeName
+
"."
+
linekey
,
lineValue
);
}
if
(
isUpdate
){
updateLanguageList
.
add
(
oldMsg
);
languageMsgManager
.
save
(
oldMsg
);
MessageUtils
.
updateMsg
(
oldMsg
);
}
}
}
catch
(
IOException
e
)
{
log
.
error
(
"readJsFile 出错:"
+
e
.
toString
());
e
.
printStackTrace
();
}
return
map
;
}
// private void msgListUpload(String type, List<LanguageMsg> msgList) {
//
// List<LanguageMsg> newLanguageList = new ArrayList<>();
// List<LanguageMsg> updateLanguageList = new ArrayList<>();
// for (LanguageMsg msg :
// msgList) {
// msg.setType(type);
// if(ObjectUtil.isEmpty(msg.getCode())) {
// //code不能为空
// continue;
// }
// if(ObjectUtil.isEmpty(msg.getMsg())){
// //内容不能为空
// continue;
// }
//
// List<Content> contentList = new ArrayList<>();
// for (Content con :
// msg.getContentList()) {
// if (ObjectUtil.isEmpty(con.getLanCode()) || ObjectUtil.isEmpty(con.getMsg())) {
// continue;
// }
// contentList.add(con);
// }
//
//
// //判断是否是新增
// LanguageMsg oldMsg=MessageUtils.getMsg(msg.getCode());
// if(oldMsg==null){
// newLanguageList.add(msg);
// }
// else{
// //只新增不修改
// List<String> allLanList=getAllLanList();
// for (String lanType :
// allLanList) {
// String oldValue= oldMsg.getContent(lanType);
// if(ObjectUtil.isEmpty(oldValue)){
// oldMsg.setContent(lanType,msg.getContent(lanType));
// }
// }
// updateLanguageList.add(oldMsg);
// languageMsgManager.save(oldMsg);
// MessageUtils.updateMsg(oldMsg);
// }
//
// }
//
//
//
// if (newLanguageList.size() > 0) {
// languageMsgManager.insertAll(newLanguageList);
// for (LanguageMsg msg :
// newLanguageList) {
// MessageUtils.updateMsg(msg);
// }
// }
// log.info("导入[" + type + "]类型的资源列表,共更新[" + updateLanguageList.size() + "]条资源,新增[" + newLanguageList.size() + "]条资源");
//
// }
if
(
newLanguageList
.
size
()
>
0
)
{
languageMsgManager
.
insertAll
(
newLanguageList
);
for
(
LanguageMsg
msg
:
newLanguageList
)
{
MessageUtils
.
updateMsg
(
msg
);
}
}
log
.
info
(
"导入csv资源,共["
+
msgList
.
size
()+
"]条数据,共更新["
+
updateLanguageList
.
size
()
+
"]条资源,新增["
+
newLanguageList
.
size
()
+
"]条资源"
);
}
}
src/main/java/com/neotel/smfcore/core/language/rest/LanguageSetController.java
查看文件 @
ee52703
package
com
.
neotel
.
smfcore
.
core
.
language
.
rest
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.language.service.bean.LanguageInfo
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.security.rest.bean.dto.UserDto
;
import
com.neotel.smfcore.security.service.po.User
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -13,10 +17,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
@Slf4j
...
...
@@ -29,87 +35,96 @@ public class LanguageSetController {
@Autowired
DataCache
dataCache
;
public
List
<
String
>
getAllLanList
()
{
public
List
<
LanguageInfo
>
getAllLanList
()
{
List
<
String
>
lanList
=
dataCache
.
getCache
(
Constants
.
CACHE_languageType
);
if
(
lanList
==
null
||
lanList
.
size
()
<=
0
)
{
lanList
=
new
ArrayList
<>();
lanList
.
add
(
MessageUtils
.
ZH_CN
);
lanList
.
add
(
MessageUtils
.
ZH_TW
);
lanList
.
add
(
MessageUtils
.
EN_US
);
lanList
.
add
(
MessageUtils
.
JA_JP
);
dataCache
.
updateCache
(
Constants
.
CACHE_languageType
,
lanList
);
}
return
lanList
;
// List<LanguageInfo> lanList = dataCache.getCache(Constants.CACHE_languageType);
// if (lanList == null || lanList.size() <= 0) {
// lanList = MessageUtils.getDefaultLanList();
// dataCache.updateCache(Constants.CACHE_languageType, lanList);
// }
return
dataCache
.
getLanguageList
();
}
@ApiOperation
(
"获取语言列表"
)
@GetMapping
@PreAuthorize
(
"@el.check('translation')"
)
public
List
<
String
>
getList
(){
return
getAllLanList
();
public
List
<
LanguageInfo
>
getList
(){
return
getAllLanList
();
}
@ApiOperation
(
"新增语言"
)
@PostMapping
@PreAuthorize
(
"@el.check('translation')"
)
public
ResponseEntity
<
Object
>
create
(
@RequestBody
String
languageType
)
{
public
ResponseEntity
<
Object
>
create
(
@RequestBody
LanguageInfo
newLan
)
{
//判断是否是admin
String
userName
=
SecurityUtils
.
getCurrentUsername
();
if
(!
userName
.
equals
(
Constants
.
SUPER_USERNAME
))
{
throw
new
ValidateException
(
"smfco
de.noLanguageSetAccess"
,
"没有编辑语言的权限"
);
String
userName
=
SecurityUtils
.
getCurrentUsername
();
if
(!
userName
.
equals
(
Constants
.
SUPER_USERNAME
))
{
throw
new
ValidateException
(
"smfco
re.noLanguageSetAccess"
,
"没有编辑语言的权限"
);
}
if
(
languageType
==
null
)
{
throw
new
ValidateException
(
"smfco
de.languageCanotNull"
,
"语言类型不能为空"
);
if
(
newLan
==
null
||
ObjectUtil
.
isEmpty
(
newLan
.
getLanCode
())
||
ObjectUtil
.
isEmpty
(
newLan
.
getLanName
()))
{
throw
new
ValidateException
(
"smfco
re.languageCanotNull"
,
"语言类型不能为空"
);
}
List
<
String
>
languageTypeList
=
getAllLanList
();
if
(!
languageTypeList
.
contains
(
languageType
)){
log
.
info
(
"用户["
+
SecurityUtils
.
getCurrentUsername
()+
"] 新增语言:"
+
languageType
);
languageTypeList
.
add
(
languageType
);
dataCache
.
updateCache
(
Constants
.
CACHE_languageType
,
languageTypeList
);
List
<
LanguageInfo
>
languageTypeList
=
getAllLanList
();
for
(
LanguageInfo
lan
:
languageTypeList
)
{
if
(
lan
.
getLanCode
().
equals
(
newLan
.
getLanCode
()))
{
throw
new
ValidateException
(
"smfcore.languageAlreadyExist "
,
"语言[{0}]已存在"
,
new
String
[]{
newLan
.
getLanCode
()});
}
}
log
.
info
(
"用户["
+
SecurityUtils
.
getCurrentUsername
()
+
"] 新增语言:"
+
newLan
.
getLanCode
()
+
","
+
newLan
.
getLanName
());
languageTypeList
.
add
(
newLan
);
dataCache
.
updateCache
(
Constants
.
CACHE_languageType
,
languageTypeList
);
return
new
ResponseEntity
<>(
HttpStatus
.
CREATED
);
}
@ApiOperation
(
"删除指定语言"
)
@DeleteMapping
@PreAuthorize
(
"@el.check('translation')"
)
public
ResponseEntity
<
Object
>
delete
(
@RequestBody
Set
<
String
>
lan
guageTyp
es
)
{
public
ResponseEntity
<
Object
>
delete
(
@RequestBody
Set
<
String
>
lan
Cod
es
)
{
//判断是否是admin
String
userName
=
SecurityUtils
.
getCurrentUsername
();
if
(!
userName
.
equals
(
Constants
.
SUPER_USERNAME
))
{
throw
new
ValidateException
(
"smfco
d
e.noLanguageSetAccess"
,
"没有编辑语言的权限"
);
throw
new
ValidateException
(
"smfco
r
e.noLanguageSetAccess"
,
"没有编辑语言的权限"
);
}
List
<
String
>
languageTypeList
=
getAllLanList
();
for
(
String
type
:
lan
guageTyp
es
)
{
List
<
LanguageInfo
>
languageTypeList
=
getAllLanList
();
for
(
String
type
:
lan
Cod
es
)
{
if
(
type
==
null
)
{
throw
new
ValidateException
(
"smfcode.languageCanotNull"
,
"语言类型不能为空"
);
throw
new
ValidateException
(
"smfcore.languageCanotNull"
,
"语言类型不能为空"
);
}
}
for
(
LanguageInfo
lan
:
languageTypeList
)
{
//如果是四种默认语言,不能删除
String
lancode
=
lan
.
getLanCode
();
if
(
lancode
.
equals
(
MessageUtils
.
ZH_CN
)
||
lancode
.
equals
(
MessageUtils
.
ZH_TW
)
||
lancode
.
equals
(
MessageUtils
.
JA_JP
)
||
lancode
.
equals
(
MessageUtils
.
EN_US
)
)
{
throw
new
ValidateException
(
"smfcore.canotRemove"
,
"不能删除此语言"
);
}
languageTypeList
.
remove
(
type
);
log
.
info
(
"用户["
+
SecurityUtils
.
getCurrentUsername
()+
"] 删除语言:"
+
type
);
}
if
(
languageTypeList
==
null
||
languageTypeList
.
size
()
<=
0
)
{
throw
new
ValidateException
(
"smfcode.languageCanotRemoveAll"
,
"不能删除所有语言"
);
List
<
LanguageInfo
>
newList
=
new
ArrayList
<>();
for
(
LanguageInfo
lan
:
languageTypeList
)
{
if
(
lanCodes
.
contains
(
lan
.
getLanCode
()))
{
log
.
info
(
"用户["
+
SecurityUtils
.
getCurrentUsername
()
+
"] 删除语言:"
+
lan
.
getLanCode
());
}
else
{
newList
.
add
(
lan
);
}
}
dataCache
.
updateCache
(
Constants
.
CACHE_languageType
,
languageTypeList
);
if
(
newList
==
null
||
newList
.
size
()
<=
0
)
{
throw
new
ValidateException
(
"smfcore.languageCanotRemoveAll"
,
"不能删除所有语言"
);
}
dataCache
.
updateCache
(
Constants
.
CACHE_languageType
,
newList
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
}
// @ApiOperation("修改语言列表")
// @PostMapping
// @PreAuthorize("@el.check('translation')")
// public ResultBean create(@RequestBody List<String> languageTypeList) {
// if(languageTypeList==null||languageTypeList.size()<=0){
// throw new ValidateException("smfcode.languageCanotNull","语言类型不能为空" );
// }
//
// //判断是否是admin
// String userName= SecurityUtils.getCurrentUsername();
// if(!userName.equals(Constants.SUPER_USERNAME)){
// throw new ValidateException("smfcode.noLanguageSetAccess","没有修改语言的权限");
// }
// dataCache.updateCache(Constants.CACHE_languageType, languageTypeList);
//
// return ResultBean.newOkResult("ok");
// }
}
src/main/java/com/neotel/smfcore/core/language/service/bean/LanguageInfo.java
0 → 100644
查看文件 @
ee52703
package
com
.
neotel
.
smfcore
.
core
.
language
.
service
.
bean
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
LanguageInfo
implements
Serializable
{
/**
* 语言简码:zh-CN,zh-TW 等
*/
@ApiModelProperty
(
"语言简码:zh-CN,zh-TW 等"
)
private
String
lanCode
;
/**
* 语言名称:简体中文,繁体中文 等
*/
@ApiModelProperty
(
"语言名称:简体中文,繁体中文 等"
)
private
String
lanName
;
/**
* 语言图标
*/
@ApiModelProperty
(
"语言图标"
)
private
String
icon
;
}
src/main/java/com/neotel/smfcore/core/language/service/nanager/impl/LanguageMsgManagerImpl.java
查看文件 @
ee52703
...
...
@@ -9,6 +9,7 @@ import com.neotel.smfcore.core.barcode.bean.PlateSizeBean;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.language.service.bean.Content
;
import
com.neotel.smfcore.core.language.service.bean.LanguageInfo
;
import
com.neotel.smfcore.core.language.service.dao.ILanguageMsgDao
;
import
com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager
;
import
com.neotel.smfcore.core.language.service.po.LanguageMsg
;
...
...
@@ -64,18 +65,6 @@ public class LanguageMsgManagerImpl implements ILanguageMsgManager {
@Autowired
DataCache
dataCache
;
public
List
<
String
>
getAllLanList
(){
List
<
String
>
lanList
=
dataCache
.
getCache
(
Constants
.
CACHE_languageType
);
if
(
lanList
==
null
||
lanList
.
size
()<=
0
){
lanList
.
add
(
MessageUtils
.
ZH_CN
);
lanList
.
add
(
MessageUtils
.
ZH_TW
);
lanList
.
add
(
MessageUtils
.
EN_US
);
lanList
.
add
(
MessageUtils
.
JA_JP
);
dataCache
.
updateCache
(
Constants
.
CACHE_languageType
,
lanList
);
}
return
lanList
;
}
@Override
public
void
download
(
List
<
LanguageMsg
>
msgList
,
HttpServletResponse
response
)
throws
IOException
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
...
...
@@ -83,16 +72,16 @@ public class LanguageMsgManagerImpl implements ILanguageMsgManager {
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"编号"
,
msg
.
getCode
());
map
.
put
(
"类型"
,
msg
.
getType
());
map
.
put
(
"
默认值
"
,
msg
.
getMsg
());
List
<
String
>
lanList
=
getAllLan
List
();
for
(
String
lanType
:
map
.
put
(
"
内容
"
,
msg
.
getMsg
());
List
<
LanguageInfo
>
lanList
=
dataCache
.
getLanguage
List
();
for
(
LanguageInfo
languageInfo
:
lanList
)
{
map
.
put
(
lanType
,
msg
.
getContent
(
lanType
));
String
title
=
languageInfo
.
getLanCode
()
;
if
(
ObjectUtil
.
isNotEmpty
(
languageInfo
.
getLanName
())){
title
=
languageInfo
.
getLanName
();
}
map
.
put
(
title
,
msg
.
getContent
(
languageInfo
.
getLanCode
()));
}
// map.put("简体中文", msg.getContent(MessageUtils.ZH_CN));
// map.put("繁体中文", msg.getContent(MessageUtils.ZH_TW));
// map.put("英文", msg.getContent(MessageUtils.EN_US));
// map.put("日文", msg.getContent(MessageUtils.JA_JP));
list
.
add
(
map
);
}
FileUtil
.
downloadExcel
(
list
,
response
);
...
...
@@ -100,19 +89,19 @@ public class LanguageMsgManagerImpl implements ILanguageMsgManager {
@Override
public
LanguageMsg
saveMsg
(
LanguageMsg
resources
)
{
if
(
resources
.
getCode
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"code"
});
if
(
ObjectUtil
.
isEmpty
(
resources
.
getCode
()
)
)
{
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"code"
});
}
if
(
resources
.
getMsg
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"msg"
});
if
(
ObjectUtil
.
isEmpty
(
resources
.
getMsg
()
)
)
{
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"msg"
});
}
if
(
resources
.
getType
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"type"
});
if
(
ObjectUtil
.
isEmpty
(
resources
.
getType
()
)
)
{
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"type"
});
}
if
(
resources
.
getContentList
()
==
null
)
{
if
(
ObjectUtil
.
isEmpty
(
resources
.
getContentList
()
)
)
{
resources
.
setContentList
(
new
ArrayList
<>());
}
Criteria
c
=
Criteria
.
where
(
"code"
).
is
(
resources
.
getCode
());
Criteria
c
=
Criteria
.
where
(
"code"
).
is
(
resources
.
getCode
())
.
and
(
"type"
).
is
(
resources
.
getType
())
;
String
logName
=
"新增资源:"
;
if
(
resources
.
getId
()
!=
null
)
{
logName
=
"修改资源:"
;
...
...
@@ -120,7 +109,7 @@ public class LanguageMsgManagerImpl implements ILanguageMsgManager {
}
//code不能重复
LanguageMsg
result
=
languageMsgDao
.
findOne
(
new
Query
(
c
));
if
(
result
!=
null
)
{
throw
new
ValidateException
(
"smfco
de.resourcesExist"
,
"资源["
+
resources
.
getCode
()
+
"]已存在"
);
throw
new
ValidateException
(
"smfco
re.resourcesExist"
,
"资源[{0}][{1}]已存在"
,
new
String
[]{
resources
.
getType
(),
resources
.
getCode
()}
);
}
Query
query
=
new
Query
(
c
);
...
...
src/main/java/com/neotel/smfcore/core/language/service/po/LanguageMsg.java
查看文件 @
ee52703
...
...
@@ -80,7 +80,7 @@ public class LanguageMsg extends BasePo implements Serializable {
public
void
setContent
(
String
lanCode
,
String
lanMsg
)
{
if
(
ObjectUtil
.
isEmpty
(
lanCode
)){
setMsg
(
lan
Code
);
setMsg
(
lan
Msg
);
return
;
}
for
(
Content
con
:
...
...
src/main/java/com/neotel/smfcore/core/language/util/MessageUtils.java
查看文件 @
ee52703
package
com
.
neotel
.
smfcore
.
core
.
language
.
util
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.csv.CsvReader
;
import
com.neotel.smfcore.core.language.service.bean.Content
;
import
com.neotel.smfcore.core.language.service.bean.LanguageInfo
;
import
com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager
;
import
com.neotel.smfcore.core.language.service.po.LanguageMsg
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.MessageSource
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.PostConstruct
;
import
java.io.*
;
import
java.text.MessageFormat
;
import
java.util.*
;
/**
...
...
@@ -22,153 +24,205 @@ import java.util.*;
public
class
MessageUtils
{
//-----------------以下为从配置文件读取资源-------------------------------------
public
static
Locale
getDefaultLocal
(){
return
new
Locale
(
"zh-CH"
);
}
private
static
MessageSource
messageSource
;
// public static Locale getDefaultLocal(){
// return new Locale("zh-CH");
// }
public
MessageUtils
(
MessageSource
messageSource
)
{
MessageUtils
.
messageSource
=
messageSource
;
}
// private static MessageSource messageSource;
public
static
String
getText
(
String
msgKey
,
Locale
locale
,
String
defaultMsg
)
{
return
getText
(
msgKey
,
null
,
locale
,
defaultMsg
)
;
}
// public MessageUtils(MessageSource messageSource
) {
// MessageUtils.messageSource = messageSource
;
//
}
public
static
String
getText
(
String
msgKey
,
String
[]
params
,
Locale
locale
,
String
defaultMsg
)
{
try
{
if
(
params
==
null
)
{
return
messageSource
.
getMessage
(
msgKey
,
new
String
[]{},
locale
);
}
else
{
return
messageSource
.
getMessage
(
msgKey
,
params
,
locale
);
}
}
catch
(
Exception
ex
){
log
.
error
(
"获取资源["
+
msgKey
+
"]["
+
defaultMsg
+
"]["
+
locale
.
getLanguage
()+
"]出错:"
+
ex
.
toString
());
if
(
defaultMsg
!=
null
){
return
defaultMsg
;
}
return
msgKey
;
}
}
// public static String getText(String msgKey, Locale locale,String defaultMsg) {
// return getText(msgKey,null, locale,defaultMsg);
// }
//
// public static String getText(String msgKey, String[] params, Locale locale, String defaultMsg) {
// try{
// if (params == null) {
// return messageSource.getMessage(msgKey, new String[]{}, locale);
// } else {
// return messageSource.getMessage(msgKey,params, locale);
// }
// }catch (Exception ex){
// log.error("获取资源["+msgKey+"]["+defaultMsg+"]["+locale.getLanguage()+"]出错:"+ex.toString());
// if(defaultMsg != null){
// return defaultMsg;
// }
// return msgKey;
// }
// }
//-------------------------------------------------------------------------------
/**
* key=code
*
资源集合,
key=code
*/
private
static
Map
<
String
,
LanguageMsg
>
msgMap
=
new
HashMap
<>();
private
static
Map
<
String
,
Map
<
String
,
LanguageMsg
>>
msgMap
=
new
HashMap
<>();
@Autowired
ILanguageMsgManager
languageMsgManager
;
public
static
final
String
ZH_CN
=
"zh-CN"
;
public
static
final
String
ZH_TW
=
"zh-TW"
;
public
static
final
String
EN_US
=
"en-US"
;
public
static
final
String
JA_JP
=
"ja-JP"
;
//服务器type
public
static
final
String
smfcore
=
"smfcore"
;
@PostConstruct
public
void
initialize
()
{
initLanguageMsgList
();
}
// public static List<String> getAllLanList(){
//
//
// List<String> lanList=new ArrayList<>();
// lanList.add(ZH_CN);
// lanList.add(ZH_TW);
// lanList.add(EN_US);
// lanList.add(JA_JP);
// return lanList;
// }
//-----------------以下为从缓存读取资源-------------------------------------
public
static
Locale
getDefaultLocal
(){
return
new
Locale
(
"zh-CH"
);
}
// public static Locale getDefaultLocal(){
// return new Locale("zh-CH");
// }
// public static String getText(String msgKey, Locale locale,String defaultMsg) {
// return getText(msgKey,null, locale,defaultMsg);
// }
//
// public static String getText(String msgKey, String[] params, Locale locale, String defaultMsg) {
// try{
// String msg=getMessage(msgKey,locale.toLanguageTag(),defaultMsg);
// if (params == null) {
// return msg;
// } else {
// return MessageFormat.format(msg,params);
// }
// }catch (Exception ex){
// log.error("获取资源["+msgKey+"]["+defaultMsg+"]["+locale.getLanguage()+"]出错:"+ex.toString());
// if(defaultMsg != null){
// return defaultMsg;
// }
// return msgKey;
// }
// }
public
static
String
getText
(
String
msgKey
,
Locale
locale
,
String
defaultMsg
)
{
return
getText
(
msgKey
,
null
,
locale
,
defaultMsg
);
}
public
static
String
getText
(
String
msgKey
,
String
[]
params
,
Locale
locale
,
String
defaultMsg
)
{
try
{
String
msg
=
getMessage
(
msgKey
,
locale
.
toLanguageTag
(),
defaultMsg
);
if
(
params
==
null
)
{
return
msg
;
}
else
{
return
MessageFormat
.
format
(
msg
,
params
);
}
}
catch
(
Exception
ex
){
log
.
error
(
"获取资源["
+
msgKey
+
"]["
+
defaultMsg
+
"]["
+
locale
.
getLanguage
()+
"]出错:"
+
ex
.
toString
());
if
(
defaultMsg
!=
null
){
return
defaultMsg
;
}
return
msgKey
;
}
}
private
static
String
getMessage
(
String
msgKey
,
String
lanType
,
String
defaultMsg
)
{
if
(
msgMap
!=
null
)
{
LanguageMsg
msg
=
msgMap
.
get
(
msgKey
);
if
(
msgMap
!=
null
&&
msgMap
.
containsKey
(
smfcore
)
)
{
LanguageMsg
msg
=
msgMap
.
get
(
smfcore
).
get
(
msgKey
);
if
(
msg
!=
null
)
{
for
(
Content
con
:
msg
.
getContentList
())
{
String
lanT
=
con
.
getLanCode
();
if
(
lanT
.
equals
(
lanType
))
{
if
(
lanT
.
equals
(
lanType
)
&&
ObjectUtil
.
isNotEmpty
(
con
.
getMsg
())
)
{
return
con
.
getMsg
();
}
}
log
.
info
(
"获取资源["
+
msgKey
+
"]["
+
defaultMsg
+
"]["
+
lanType
+
"]失败:未找到code["
+
msgKey
+
"]对应语言["
+
lanType
+
"]"
);
//
log.info("获取资源[" + msgKey + "][" + defaultMsg + "][" + lanType + "]失败:未找到code[" + msgKey + "]对应语言[" + lanType + "]");
return
msg
.
getMsg
();
}
log
.
info
(
"获取资源["
+
msgKey
+
"]["
+
defaultMsg
+
"]["
+
lanType
+
"]失败:未找到code["
+
msgKey
+
"]"
);
}
return
defaultMsg
;
}
//-------------------------------------------------------------------------------
public
static
void
updateMsg
(
LanguageMsg
msg
)
{
msgMap
.
put
(
msg
.
getCode
(),
msg
);
Map
<
String
,
LanguageMsg
>
typeMap
=
msgMap
.
get
(
msg
.
getType
());
if
(
typeMap
==
null
){
typeMap
=
new
HashMap
<>();
}
typeMap
.
put
(
msg
.
getCode
(),
msg
);
msgMap
.
put
(
msg
.
getType
(),
typeMap
);
}
public
static
void
removeMsg
(
LanguageMsg
msg
)
{
msgMap
.
remove
(
msg
.
getCode
());
if
(
msgMap
.
containsKey
(
msg
.
getType
()))
{
msgMap
.
get
(
msg
.
getType
()).
remove
(
msg
.
getCode
());
}
}
public
static
LanguageMsg
getMsg
(
String
code
)
{
return
msgMap
.
get
(
code
);
public
static
LanguageMsg
getMsg
(
String
type
,
String
code
)
{
Map
<
String
,
LanguageMsg
>
typeMap
=
msgMap
.
get
(
type
);
if
(
typeMap
!=
null
){
return
typeMap
.
get
(
code
);
}
return
null
;
}
public
static
List
<
LanguageMsg
>
getLanMsgByType
(
String
type
)
{
List
<
LanguageMsg
>
msgList
=
new
ArrayList
<>();
for
(
LanguageMsg
msg
:
msgMap
.
values
())
{
if
(
msg
.
getType
().
equals
(
type
)){
msgList
.
add
(
msg
);
}
Map
<
String
,
LanguageMsg
>
typeMap
=
msgMap
.
get
(
type
);
if
(
typeMap
!=
null
){
msgList
=
new
ArrayList
<>(
typeMap
.
values
());
}
// for (LanguageMsg msg :
// msgMap.values()) {
// if(msg.getType().equals(type)){
// msgList.add(msg);
// }
// }
return
msgList
;
}
private
Map
<
String
,
LanguageMsg
>
loadMsgMap
()
{
Map
<
String
,
LanguageMsg
>
msgMap
=
new
HashMap
<>();
private
Map
<
String
,
Map
<
String
,
LanguageMsg
>>
loadMsgMap
()
{
Map
<
String
,
Map
<
String
,
LanguageMsg
>>
resourceMap
=
new
HashMap
<>();
List
<
LanguageMsg
>
msgs
=
languageMsgManager
.
findByQuery
(
new
Query
());
for
(
LanguageMsg
msg
:
msgs
)
{
msgMap
.
put
(
msg
.
getCode
(),
msg
);
if
(
msg
.
getCode
().
startsWith
(
"smfcode."
)||
msg
.
getType
().
equals
(
"smfcode"
)){
String
newCode
=
msg
.
getCode
().
replace
(
"smfcode."
,
"smfcore."
);
msg
.
setCode
(
newCode
);
msg
.
setType
(
"smfcore"
);
languageMsgManager
.
save
(
msg
);
}
Map
<
String
,
LanguageMsg
>
typeMap
=
resourceMap
.
get
(
msg
.
getType
());
if
(
typeMap
==
null
){
typeMap
=
new
HashMap
<>();
}
typeMap
.
put
(
msg
.
getCode
(),
msg
);
resourceMap
.
put
(
msg
.
getType
(),
typeMap
);
}
log
.
info
(
"MessageCache共加载到"
+
msgs
.
size
()
+
"条Msg"
);
return
resourceMap
;
}
public
static
List
<
LanguageInfo
>
getDefaultLanList
()
{
List
<
LanguageInfo
>
lanList
=
new
ArrayList
<>();
if
(
lanList
==
null
||
lanList
.
size
()
<=
0
)
{
lanList
=
new
ArrayList
<>();
lanList
.
add
(
new
LanguageInfo
(
MessageUtils
.
ZH_CN
,
"简体中文"
,
""
));
lanList
.
add
(
new
LanguageInfo
(
MessageUtils
.
ZH_TW
,
"繁体中文"
,
""
));
lanList
.
add
(
new
LanguageInfo
(
MessageUtils
.
EN_US
,
"English"
,
""
));
lanList
.
add
(
new
LanguageInfo
(
MessageUtils
.
JA_JP
,
"日本语"
,
""
));
}
log
.
info
(
"MessageCache共加载到"
+
msgMap
.
size
()
+
"条Msg"
);
return
msgMap
;
return
lanList
;
}
private
void
initLanguageMsgList
()
{
msgMap
=
loadMsgMap
();
if
(
msgMap
.
size
()
>
0
)
{
return
;
}
//自动导入CSV内容
autoImportCsvFile
();
autoImportProperties
();
msgMap
=
loadMsgMap
();
}
private
void
autoImportCsvFile
(){
}
private
void
autoImportProperties
()
{
String
fielPath
=
"D:\\resources"
;
File
file
=
new
File
(
fielPath
);
//需要获取的文件的路径
...
...
@@ -188,12 +242,12 @@ public class MessageUtils {
String
lanType
=
fileName
.
replace
(
"messages"
,
""
).
replace
(
".properties"
,
""
);
if
(
ObjectUtil
.
isEmpty
(
lanType
))
{
defaultLanMap
=
R
eadPropertiesFile
(
filePathLists
[
i
]);
defaultLanMap
=
r
eadPropertiesFile
(
filePathLists
[
i
]);
log
.
info
(
"MessageCache 从文件["
+
fileName
+
"]中导入["
+
defaultLanMap
.
size
()
+
"]条默认资源"
);
}
else
{
String
lan
=
lanType
.
substring
(
1
);
lan
=
lan
.
replace
(
'_'
,
'-'
);
Map
<
String
,
String
>
map
=
R
eadPropertiesFile
(
filePathLists
[
i
]);
Map
<
String
,
String
>
map
=
r
eadPropertiesFile
(
filePathLists
[
i
]);
lanMsgMap
.
put
(
lan
,
map
);
log
.
info
(
"MessageCache 从文件["
+
fileName
+
"]中导入["
+
defaultLanMap
.
size
()
+
"]条["
+
lan
+
"]资源"
);
}
...
...
@@ -206,14 +260,6 @@ public class MessageUtils {
for
(
String
code
:
defaultLanMap
.
keySet
())
{
String
defMsg
=
defaultLanMap
.
get
(
code
);
// int index = code.indexOf('.');
// String type = code.substring(0, index);
// LanguageMsg msg = new LanguageMsg();
// msg.setUpdateDate(msg.getCreateDate());
// msg.setCode(code);
// msg.setType(type);
// msg.setMsg(defMsg);
LanguageMsg
msg
=
new
LanguageMsg
(
code
,
defMsg
,
""
);
for
(
String
lan
:
lanMsgMap
.
keySet
())
{
...
...
@@ -226,10 +272,10 @@ public class MessageUtils {
}
languageMsgManager
.
insertAll
(
languageMsgs
);
}
msgMap
=
loadMsgMap
();
}
public
static
Map
<
String
,
String
>
ReadPropertiesFile
(
File
file
)
{
public
static
Map
<
String
,
String
>
readPropertiesFile
(
File
file
)
{
Map
<
String
,
String
>
map
=
new
HashMap
<>();
try
(
FileInputStream
fis
=
new
FileInputStream
(
file
.
getPath
());
InputStreamReader
isr
=
new
InputStreamReader
(
fis
,
"UTF-8"
);
...
...
@@ -254,7 +300,122 @@ public class MessageUtils {
}
public
static
List
<
LanguageMsg
>
readCsvFile
(
String
fileURL
,
List
<
LanguageInfo
>
languageInfos
)
throws
Exception
{
CsvReader
csvRead
=
CsvReader
.
newReader
(
fileURL
,
"编号"
,
"code"
);
int
codeIndex
=
csvRead
.
getCsvIndex
(
"编号"
,
"code"
);
int
typeIndex
=
csvRead
.
getCsvIndex
(
"类型"
,
"type"
);
int
msgIndex
=
csvRead
.
getCsvIndex
(
"内容"
,
"msg"
);
Map
<
String
,
Integer
>
lanCodeIndex
=
new
HashMap
<>()
;
// List<LanguageInfo> languageInfos=dataCache.getLanguageList();
for
(
LanguageInfo
lan:
languageInfos
)
{
int
lanIndex
=
csvRead
.
getCsvIndex
(
lan
.
getLanCode
(),
lan
.
getLanName
());
if
(
lanIndex
>=
0
){
lanCodeIndex
.
put
(
lan
.
getLanCode
(),
lanIndex
);
}
}
int
row
=
1
;
int
newRowCount
=
0
;
int
updateRowCount
=
0
;
String
msg
=
""
;
List
<
LanguageMsg
>
list
=
new
ArrayList
<>();
while
(
csvRead
.
readRecord
())
{
row
++;
String
[]
lineValues
=
csvRead
.
getValues
();
LanguageMsg
languageMsg
=
new
LanguageMsg
();
String
code
=
lineValues
[
codeIndex
];
String
type
=
lineValues
[
typeIndex
];
String
msgStr
=
lineValues
[
msgIndex
];
if
(
code
.
isEmpty
()
||
type
.
isEmpty
()
||
msgStr
.
isEmpty
())
{
log
.
warn
(
"第"
+
row
+
"行中有空白内容,此行忽略"
);
continue
;
}
languageMsg
.
setMsg
(
msgStr
);
languageMsg
.
setCode
(
code
);
languageMsg
.
setType
(
type
);
for
(
String
lan
:
lanCodeIndex
.
keySet
())
{
int
lanIndex
=
lanCodeIndex
.
get
(
lan
);
String
lanMsg
=
lineValues
[
lanIndex
];
if
(!
lanMsg
.
isEmpty
()){
languageMsg
.
setContent
(
lan
,
lanMsg
);
}
}
list
.
add
(
languageMsg
);
}
return
list
;
}
public
static
Map
<
String
,
String
>
readJsFile
(
File
file
){
Map
<
String
,
String
>
map
=
new
HashMap
<>();
try
(
FileInputStream
fis
=
new
FileInputStream
(
file
.
getPath
());
InputStreamReader
isr
=
new
InputStreamReader
(
fis
,
"UTF-8"
);
BufferedReader
br
=
new
BufferedReader
(
isr
)
)
{
String
line
;
//网友推荐更加简洁的写法
int
lineIndex
=-
1
;
String
currNodeName
=
""
;
while
((
line
=
br
.
readLine
())
!=
null
)
{
lineIndex
++;
// if(lineIndex==0){
// continue;
// }
if
(
ObjectUtil
.
isEmpty
(
line
)){
continue
;
}
if
(
line
.
contains
(
"{"
)){
if
(
line
.
contains
(
"="
)){
currNodeName
=
""
;
}
else
{
int
dendIndex
=
line
.
indexOf
(
':'
);
String
lineNode
=
line
.
substring
(
0
,
dendIndex
).
trim
();
if
(
ObjectUtil
.
isEmpty
(
currNodeName
)){
currNodeName
=
lineNode
;
}
else
{
//节点名称+
currNodeName
=
currNodeName
+
"."
+
lineNode
;
}
}
}
else
if
(
line
.
contains
(
"}"
)){
//节点名称-
if
(
currNodeName
.
contains
(
"."
)){
int
endIndex
=
currNodeName
.
lastIndexOf
(
"."
);
currNodeName
=
currNodeName
.
substring
(
0
,
endIndex
);
}
else
{
currNodeName
=
""
;
}
}
else
if
(
line
.
contains
(
":"
)){
if
(
line
.
endsWith
(
","
)){
line
=
line
.
substring
(
0
,
line
.
length
()-
1
);
}
String
[]
array
=
line
.
replace
(
"'"
,
""
).
replace
(
"\""
,
""
).
split
(
":"
);
if
(
array
.
length
==
2
){
String
linekey
=
array
[
0
].
trim
();
String
lineValue
=
array
[
1
].
trim
();
map
.
put
(
currNodeName
+
"."
+
linekey
,
lineValue
);
}
}
}
}
catch
(
IOException
e
)
{
log
.
error
(
"readJsFile 出错:"
+
e
.
toString
());
e
.
printStackTrace
();
}
return
map
;
}
}
src/main/java/com/neotel/smfcore/core/msd/rest/MSDController.java
查看文件 @
ee52703
...
...
@@ -116,11 +116,11 @@ public class MSDController {
MSDSettiings
settiings
=
msdSettingsMapper
.
toEntity
(
msdSettiingsDto
);
if
(
settiings
.
getMaxHumidity
()
<=
settiings
.
getMinHumidity
())
{
throw
new
ValidateException
(
"smfco
d
e.humidityValueError"
,
"温度范围数据错误"
);
throw
new
ValidateException
(
"smfco
r
e.humidityValueError"
,
"温度范围数据错误"
);
}
if
(
settiings
.
getMaxTemperature
()
<=
settiings
.
getMinTemperature
())
{
throw
new
ValidateException
(
"smfco
d
e.temperatureValueError"
,
"湿度范围数据错误"
);
throw
new
ValidateException
(
"smfco
r
e.temperatureValueError"
,
"湿度范围数据错误"
);
}
dataCache
.
updateCache
(
Constants
.
CACHE_msdSetting
,
settiings
);
log
.
info
(
"更改MSD:CACHE_msdSetting="
+
settiings
.
toString
());
...
...
@@ -193,11 +193,11 @@ public class MSDController {
String
posName
=
paramsMap
.
get
(
"posName"
);
StoragePos
pos
=
storagePosManager
.
getByPosName
(
posName
);
if
(
pos
==
null
||
(
pos
.
isUsed
()
==
false
)
||
pos
.
getBarcode
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.msd.noPos"
,
"未找到可开封的物料"
);
throw
new
ValidateException
(
"smfco
r
e.msd.noPos"
,
"未找到可开封的物料"
);
}
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
pos
.
getBarcode
().
getBarcode
());
if
(
barcode
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.msd.noPos"
,
"未找到可开封的物料"
);
throw
new
ValidateException
(
"smfco
r
e.msd.noPos"
,
"未找到可开封的物料"
);
}
DateTime
dateTime
=
new
DateTime
();
pos
.
getBarcode
().
setOpenTime
(
dateTime
);
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
ee52703
...
...
@@ -302,22 +302,22 @@ public class LiteOrderCache implements ITaskListener {
}
if
(
cacheOrder
==
null
)
{
return
"smfco
d
e.order.out.notFound"
;
return
"smfco
r
e.order.out.notFound"
;
}
if
(
!
cacheOrder
.
isTaskFinished
()
&&
!
cacheOrder
.
isNew
())
{
log
.
info
(
"工单["
+
orderNo
+
"]正在执行"
);
return
"smfco
d
e.order.out.executing"
;
return
"smfco
r
e.order.out.executing"
;
}
if
(
cacheOrder
.
isClosed
())
{
log
.
info
(
"工单["
+
orderNo
+
"]已关闭,无法出库"
);
return
"smfco
d
e.order.hasClose"
;
return
"smfco
r
e.order.hasClose"
;
}
ORDER_COLOR
nextColor
=
getNextColor
();
if
(
nextColor
==
null
)
{
log
.
info
(
"执行工单["
+
orderNo
+
"] outBom="
+
outBom
+
"时,已达最大可执行工单数"
);
return
"smfco
d
e.order.out.maxOrder"
;
return
"smfco
r
e.order.out.maxOrder"
;
}
log
.
info
(
"开始执行工单["
+
orderNo
+
"] outBom="
+
outBom
);
...
...
@@ -409,7 +409,7 @@ public class LiteOrderCache implements ITaskListener {
liteOrderMap
.
put
(
cacheOrder
.
getOrderNo
(),
cacheOrder
);
if
(
taskReelCount
<=
0
)
{
//return "工单无可执行的任务";
return
"smfco
d
e.order.out.noTask"
;
return
"smfco
r
e.order.out.noTask"
;
}
return
""
;
}
...
...
@@ -445,7 +445,7 @@ public class LiteOrderCache implements ITaskListener {
if
(
liteOrder
==
null
)
{
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
liteOrder
==
null
){
return
"smfco
d
e.order.out.notFound"
;
return
"smfco
r
e.order.out.notFound"
;
}
}
//有任务的工单不能关闭
...
...
@@ -457,7 +457,7 @@ public class LiteOrderCache implements ITaskListener {
String
taskSourceName
=
task
.
getSourceName
();
if
(!
Strings
.
isNullOrEmpty
(
taskSourceName
)
&&
orderNo
.
equals
(
taskSourceName
))
{
log
.
info
(
"关闭工单["
+
orderNo
+
"]失败,有未完成的出库任务:"
+
task
.
getPosName
());
return
"smfco
d
e.order.close.taskNotEnd"
;
return
"smfco
r
e.order.close.taskNotEnd"
;
}
}
}
...
...
@@ -467,7 +467,7 @@ public class LiteOrderCache implements ITaskListener {
log
.
info
(
"关闭工单["
+
orderNo
+
"]成功"
);
liteOrder
.
setClosed
(
true
);
liteOrderManager
.
save
(
liteOrder
);
return
"smfco
d
e.order.close.success"
;
return
"smfco
r
e.order.close.success"
;
}
/**
...
...
@@ -481,11 +481,11 @@ public class LiteOrderCache implements ITaskListener {
if
(
cacheOrder
==
null
)
{
cacheOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
cacheOrder
==
null
){
return
"smfco
d
e.order.out.notFound"
;
return
"smfco
r
e.order.out.notFound"
;
}
}
if
(
cacheOrder
.
isClosed
()){
return
"smfco
d
e.order.hasClose"
;
return
"smfco
r
e.order.hasClose"
;
}
for
(
LiteOrderItem
orderItem:
cacheOrder
.
getOrderItems
()
...
...
@@ -508,7 +508,7 @@ public class LiteOrderCache implements ITaskListener {
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
);
}
if
(
pos
==
null
)
{
return
"smfco
d
e.order.supplementOutFail"
;
return
"smfco
r
e.order.supplementOutFail"
;
}
else
{
log
.
info
(
"工单["
+
orderNo
+
"]["
+
partNumber
+
"]补料出库:仓位["
+
pos
.
getPosName
()
+
"]RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
partNumber
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
DataLog
task
=
newTask
(
pos
)
;
...
...
@@ -527,6 +527,6 @@ public class LiteOrderCache implements ITaskListener {
}
}
}
return
"smfco
d
e.order.supplementOutFail"
;
return
"smfco
r
e.order.supplementOutFail"
;
}
}
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
ee52703
...
...
@@ -147,7 +147,7 @@ public class OrderController {
liteOrder
.
setOrderNo
(
newOrderNo
);
}
else
{
log
.
info
(
"数据库中已存在工单号为["
+
liteOrder
.
getOrderNo
()
+
"],忽略文件:"
+
localFile
.
getAbsolutePath
());
return
ResultBean
.
newErrorResult
(-
1
,
"smfco
d
e.order.ameExists"
,
"工单名称[{0}]已存在"
,
new
String
[]{
liteOrder
.
getOrderNo
()});
return
ResultBean
.
newErrorResult
(-
1
,
"smfco
r
e.order.ameExists"
,
"工单名称[{0}]已存在"
,
new
String
[]{
liteOrder
.
getOrderNo
()});
}
}
log
.
info
(
"新增加订单:"
+
liteOrder
.
getOrderNo
()
+
",共"
+
liteOrderItems
.
size
()
+
"条工单详情"
);
...
...
@@ -155,7 +155,7 @@ public class OrderController {
liteOrderCache
.
addOrderToMap
(
liteOrder
);
}
return
ResultBean
.
newOkResult
(
"smfco
d
e.order.uploadOK"
,
"工单上传成功"
,
""
);
return
ResultBean
.
newOkResult
(
"smfco
r
e.order.uploadOK"
,
"工单上传成功"
,
""
);
}
@ApiOperation
(
"工单出库"
)
...
...
@@ -164,11 +164,11 @@ public class OrderController {
public
ResultBean
checkOut
(
@RequestBody
Map
<
String
,
String
>
mapValues
)
{
String
orderNo
=
mapValues
.
get
(
"orderNo"
);
if
(
orderNo
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
LiteOrder
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
liteOrder
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"orderNo"
,
orderNo
});
throw
new
ValidateException
(
"smfco
r
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"orderNo"
,
orderNo
});
}
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
);
if
(
ObjectUtil
.
isEmpty
(
result
)){
...
...
@@ -185,7 +185,7 @@ public class OrderController {
public
ResultBean
outBom
(
@RequestBody
Map
<
String
,
String
>
mapValues
)
{
String
orderNo
=
mapValues
.
get
(
"orderNo"
);
if
(
orderNo
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
orderNo
,
true
);
if
(
ObjectUtil
.
isEmpty
(
result
)){
...
...
@@ -202,7 +202,7 @@ public class OrderController {
public
ResultBean
outTails
(
@RequestBody
Map
<
String
,
String
>
mapValues
)
{
String
orderNo
=
mapValues
.
get
(
"orderNo"
);
if
(
orderNo
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
checkOutLiteOrder
(
orderNo
,
false
);
...
...
@@ -220,7 +220,7 @@ public class OrderController {
String
orderNo
=
mapValues
.
get
(
"orderNo"
);
String
orderItemId
=
mapValues
.
get
(
"orderItemId"
);
if
(
orderNo
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
orderItemSupplementOut
(
orderNo
,
orderItemId
);
if
(
ObjectUtil
.
isEmpty
(
result
)){
...
...
@@ -369,7 +369,7 @@ public class OrderController {
}
}
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
...
...
@@ -381,14 +381,14 @@ public class OrderController {
float
orderTimes
=
param
.
getOrderTimes
();
if
(
orderNo
==
null
)
{
// throw new ValidateException("工单号不能为空");
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
LiteOrder
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
liteOrder
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"orderNo"
,
orderNo
});
throw
new
ValidateException
(
"smfco
r
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"orderNo"
,
orderNo
});
}
if
(!
liteOrder
.
isNew
()){
throw
new
ValidateException
(
"smfco
d
e.cannotUpdateOrderNum"
,
"工单已出库,不能修改数量"
);
throw
new
ValidateException
(
"smfco
r
e.cannotUpdateOrderNum"
,
"工单已出库,不能修改数量"
);
}
if
(
orderTimes
<
1
){
orderTimes
=
1
;
...
...
@@ -405,7 +405,7 @@ public class OrderController {
public
ResultBean
closeOrder
(
@RequestBody
Map
<
String
,
String
>
mapValues
)
{
String
orderNo
=
mapValues
.
get
(
"orderNo"
);
if
(
orderNo
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
String
result
=
liteOrderCache
.
closeOrder
(
orderNo
);
...
...
@@ -422,19 +422,19 @@ public class OrderController {
@PreAuthorize
(
"@el.check('workOrder')"
)
public
ResultBean
updateLine
(
@RequestBody
OrderDto
param
)
{
if
(
param
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
if
(
param
.
getLine
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.order.lineCanotNull"
,
"线别不能为空"
);
throw
new
ValidateException
(
"smfco
r
e.order.lineCanotNull"
,
"线别不能为空"
);
}
LiteOrder
order
=
liteOrderManager
.
get
(
param
.
getId
());
if
(
order
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"orderNo"
});
}
if
(!
order
.
isNew
())
{
throw
new
ValidateException
(
"smfco
d
e.order.cannotUpdateLine"
,
"工单已出库,不能修改线别"
);
throw
new
ValidateException
(
"smfco
r
e.order.cannotUpdateLine"
,
"工单已出库,不能修改线别"
);
}
order
.
setLine
(
param
.
getLine
());
liteOrderManager
.
save
(
order
);
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/LabelController.java
查看文件 @
ee52703
...
...
@@ -66,7 +66,7 @@ public class LabelController {
public
ResponseEntity
<
Object
>
update
(
@RequestBody
LabelDto
labelDto
)
{
Label
resources
=
labelMapper
.
toEntity
(
labelDto
);
if
(
resources
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
labelManager
.
saveLabel
(
resources
);
return
new
ResponseEntity
<>(
HttpStatus
.
NO_CONTENT
);
...
...
@@ -79,18 +79,18 @@ public class LabelController {
Set
<
Group
>
menuSet
=
new
HashSet
<>();
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
Label
label
=
labelManager
.
get
(
id
);
if
(
label
==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
}
);
}
//查找组下是否有设备
Query
query
=
new
Query
(
Criteria
.
where
(
"labelId"
).
is
(
id
));
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
query
);
if
(
storagePosList
!=
null
&&
storagePosList
.
size
()
>=
1
)
{
throw
new
ValidateException
(
"smfco
d
e.labelWithStoragePos"
,
"标签[{0}]已和库位关联"
,
new
String
[]{
label
.
getLabelName
()});
throw
new
ValidateException
(
"smfco
r
e.labelWithStoragePos"
,
"标签[{0}]已和库位关联"
,
new
String
[]{
label
.
getLabelName
()});
}
//删除关联
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialBoxController.java
查看文件 @
ee52703
...
...
@@ -68,7 +68,7 @@ public class MaterialBoxController {
codeBean
.
setError
(
e
.
getMessage
());
}
if
(
codeBean
==
null
||
codeBean
.
getBarcode
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.error.barcode.invalid"
,
"{0}不是有效的条码"
,
new
String
[]{
code
});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.invalid"
,
"{0}不是有效的条码"
,
new
String
[]{
code
});
}
if
(
codeBean
.
getErrorCode
()
!=
null
)
{
throw
new
ValidateException
(
codeBean
.
getErrorCode
(),
codeBean
.
getError
(),
codeBean
.
getParams
());
...
...
@@ -79,7 +79,7 @@ public class MaterialBoxController {
//此处需要判断是否是料盒
Component
component
=
componentManager
.
findOneByPN
(
barcode
.
getPartNumber
()
);
if
(
component
==
null
||(
component
.
getType
()!=
COMPONENT_TYPE
.
FIXTURE
)){
throw
new
ValidateException
(
"smfco
d
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
throw
new
ValidateException
(
"smfco
r
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
}
BarcodeDto
barcodeDto
=
barcodeMapper
.
toDto
(
barcode
);
...
...
@@ -98,10 +98,10 @@ public class MaterialBoxController {
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
code
);
if
(
barcode
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
throw
new
ValidateException
(
"smfco
r
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
}
if
(
describe
==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"describe"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"describe"
}
);
}
barcode
.
setDescribe
(
describe
);
barcodeManager
.
saveBarcode
(
barcode
);
...
...
@@ -121,18 +121,18 @@ public class MaterialBoxController {
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
code
);
if
(
barcode
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
throw
new
ValidateException
(
"smfco
r
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
}
Barcode
subBarcode
=
barcode
.
getSubCode
(
subPN
);
if
(
subBarcode
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.materialBox.noReel"
,
"料盒中未找到对应物料"
);
throw
new
ValidateException
(
"smfco
r
e.materialBox.noReel"
,
"料盒中未找到对应物料"
);
}
int
opQty
=
Integer
.
valueOf
(
qtyStr
);
int
oldAmount
=
subBarcode
.
getAmount
();
if
(
oldAmount
<
opQty
)
{
throw
new
ValidateException
(
"smfco
d
e.materialBox.quantityshort"
,
"物料数量不足"
);
throw
new
ValidateException
(
"smfco
r
e.materialBox.quantityshort"
,
"物料数量不足"
);
}
int
newAmount
=
oldAmount
-
opQty
;
subBarcode
.
setAmount
(
newAmount
);
...
...
@@ -152,11 +152,11 @@ public class MaterialBoxController {
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
code
);
if
(
barcode
==
null
){
//料盒不存在
throw
new
ValidateException
(
"smfco
d
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
throw
new
ValidateException
(
"smfco
r
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
}
if
(
barcode
.
getSubCodeMap
()==
null
||
barcode
.
getSubCodeMap
().
size
()<=
0
){
//料盒中未找到对应物料
throw
new
ValidateException
(
"smfco
d
e.materialBox.boxNoReel"
,
"料盒中无物料"
);
throw
new
ValidateException
(
"smfco
r
e.materialBox.boxNoReel"
,
"料盒中无物料"
);
}
List
<
Barcode
>
barcodes
=
new
ArrayList
<>(
barcode
.
getSubCodeMap
().
values
())
;
...
...
@@ -183,7 +183,7 @@ public class MaterialBoxController {
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
code
);
if
(
barcode
==
null
){
throw
new
ValidateException
(
"smfco
d
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
throw
new
ValidateException
(
"smfco
r
e.materialBox.invalid"
,
"未找到料盒信息{0}"
,
new
String
[]{
code
});
}
//用+或-分割,如果最后几位是数量,按手动输入处理
...
...
@@ -243,7 +243,7 @@ public class MaterialBoxController {
int
oldAmount
=
subBarcode
.
getAmount
();
if
(
oldAmount
<
opQty
){
throw
new
ValidateException
(
"smfco
d
e.materialBox.quantityshort"
,
"物料数量不足"
);
throw
new
ValidateException
(
"smfco
r
e.materialBox.quantityshort"
,
"物料数量不足"
);
}
int
newAmount
=
oldAmount
-
opQty
;
...
...
@@ -255,7 +255,7 @@ public class MaterialBoxController {
log
.
info
(
subBarcode
.
getPartNumber
()
+
"从料盒["
+
barcode
.
getPosName
()+
"]出库,物料数量:"
+
oldAmount
+
" - "
+
opQty
+
" = "
+
newAmount
);
}
else
{
//无库存
throw
new
ValidateException
(
"smfco
d
e.materialBox.noReel"
,
"料盒中未找到对应物料"
);
throw
new
ValidateException
(
"smfco
r
e.materialBox.noReel"
,
"料盒中未找到对应物料"
);
}
}
...
...
@@ -267,7 +267,7 @@ public class MaterialBoxController {
Barcode
subBarcode
=
codeBean
.
getBarcode
();
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
subBarcode
.
getBarcode
());
if
(
pos
!=
null
)
{
throw
new
ValidateException
(
"smfco
d
e.materialBox.inPos"
,
"物料已在库位{0}中"
,
new
String
[]{
pos
.
getPosName
()});
throw
new
ValidateException
(
"smfco
r
e.materialBox.inPos"
,
"物料已在库位{0}中"
,
new
String
[]{
pos
.
getPosName
()});
}
if
(
subBarcode
.
getHostBarcodeId
()
==
null
)
{
...
...
@@ -295,7 +295,7 @@ public class MaterialBoxController {
//在别的料盒中
Barcode
hostBarcode
=
barcodeManager
.
get
(
subBarcode
.
getHostBarcodeId
());
if
(
hostBarcode
!=
null
)
{
throw
new
ValidateException
(
"smfco
d
e.materialBox.inOtherBox"
,
"物料已在料盒{0}中"
,
new
String
[]{
hostBarcode
.
getBarcode
()});
throw
new
ValidateException
(
"smfco
r
e.materialBox.inOtherBox"
,
"物料已在料盒{0}中"
,
new
String
[]{
hostBarcode
.
getBarcode
()});
}
}
}
else
{
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialController.java
查看文件 @
ee52703
...
...
@@ -85,15 +85,15 @@ public class MaterialController {
public
ResultBean
tacticsOuput
(
@RequestBody
Set
<
TacticsOutDto
>
outDtoSet
)
{
if
(
outDtoSet
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"PN"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"PN"
});
}
for
(
TacticsOutDto
dto
:
outDtoSet
)
{
if
(
dto
.
getPartNumber
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"PN"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"PN"
});
}
else
if
(
dto
.
getPlateNumber
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"Num"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"Num"
});
}
}
...
...
@@ -173,23 +173,23 @@ public class MaterialController {
String
labelId
=
params
.
getLabelId
();
if
(
Objects
.
isNull
(
labelId
))
{
if
(
posIds
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"PN"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"PN"
});
}
for
(
String
posId
:
posIds
)
{
StoragePos
pos
=
storagePosManager
.
get
(
posId
);
if
(
pos
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"posId"
,
posId
});
throw
new
ValidateException
(
"smfco
r
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"posId"
,
posId
});
}
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"storageId"
,
pos
.
getStorageId
()});
throw
new
ValidateException
(
"smfco
r
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"storageId"
,
pos
.
getStorageId
()});
}
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
String
outResult
=
taskService
.
checkout
(
storage
,
pos
,
true
,
SecurityUtils
.
getCurrentUsername
());
if
(!
Strings
.
isNullOrEmpty
(
outResult
))
{
throw
new
ValidateException
(
"smfco
d
e.error"
,
outResult
);
throw
new
ValidateException
(
"smfco
r
e.error"
,
outResult
);
}
}
}
else
{
...
...
@@ -200,19 +200,19 @@ public class MaterialController {
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
query
);
if
(
posList
.
size
()
<=
0
)
{
//未找到出库信息
throw
new
ValidateException
(
"smfco
d
e.label.noReel"
,
"未找到可出库的物料"
);
throw
new
ValidateException
(
"smfco
r
e.label.noReel"
,
"未找到可出库的物料"
);
}
for
(
StoragePos
pos
:
posList
)
{
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"storageId"
,
pos
.
getStorageId
()});
throw
new
ValidateException
(
"smfco
r
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"storageId"
,
pos
.
getStorageId
()});
}
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
String
outResult
=
taskService
.
checkout
(
storage
,
pos
,
true
,
SecurityUtils
.
getCurrentUsername
());
if
(!
Strings
.
isNullOrEmpty
(
outResult
))
{
throw
new
ValidateException
(
"smfco
d
e.error"
,
outResult
);
throw
new
ValidateException
(
"smfco
r
e.error"
,
outResult
);
}
}
}
...
...
@@ -232,7 +232,7 @@ public class MaterialController {
List
<
String
>
posIds
=
params
.
getPosIds
();
String
labelId
=
params
.
getLabelId
();
if
(
posIds
==
null
||
posIds
.
size
()
<=
0
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
String
labelName
=
""
;
if
(
ObjectUtil
.
isEmpty
(
labelId
))
{
...
...
@@ -258,7 +258,7 @@ public class MaterialController {
if
(
storagePos
!=
null
)
{
if
(!
ObjectUtil
.
isEmpty
(
storagePos
.
getBarcode
().
getLockId
()))
{
throw
new
ValidateException
(
"smfco
d
e.error.barcode.locked"
,
"库位[{0}]已被锁定"
);
throw
new
ValidateException
(
"smfco
r
e.error.barcode.locked"
,
"库位[{0}]已被锁定"
);
}
try
{
if
(
barcode
!=
null
)
{
...
...
@@ -269,12 +269,12 @@ public class MaterialController {
log
.
info
(
"清理库位["
+
storagePos
.
getPosName
()
+
"],条码["
+
code
+
"],库位条码为空"
);
}
return
ResultBean
.
newOkResult
(
"smfco
d
e.manualOut.ok"
,
"手动出库成功"
,
code
);
return
ResultBean
.
newOkResult
(
"smfco
r
e.manualOut.ok"
,
"手动出库成功"
,
code
);
}
catch
(
Exception
e
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.error"
,
"出错{0}"
,
new
String
[]{
e
.
getMessage
()},
true
);
}
}
else
{
throw
new
ValidateException
(
"smfco
d
e.manualOut.notFound"
,
"仓库中未找到料盘信息"
);
throw
new
ValidateException
(
"smfco
r
e.manualOut.notFound"
,
"仓库中未找到料盘信息"
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StorageController.java
查看文件 @
ee52703
...
...
@@ -143,7 +143,7 @@ public class StorageController {
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
StorageDto
resources
)
{
Storage
Storage
=
storageMapper
.
toEntity
(
resources
);
if
(
Storage
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
saveStorage
(
Storage
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
...
...
@@ -158,7 +158,7 @@ public class StorageController {
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
}
deleteStorages
(
ids
);
...
...
@@ -180,7 +180,7 @@ public class StorageController {
if
(
pos
.
getBarcode
()
==
null
||
pos
.
getBarcode
().
equals
(
""
))
{
}
else
{
throw
new
ValidateException
(
"smfco
d
e.posIsused"
,
"料仓[{0}]的库位[{1}}]有料[{2}],删除失败"
,
new
String
[]{
storage
.
getName
()
,
pos
.
getPosName
(),
pos
.
getBarcode
().
getBarcode
()});
throw
new
ValidateException
(
"smfco
r
e.posIsused"
,
"料仓[{0}]的库位[{1}}]有料[{2}],删除失败"
,
new
String
[]{
storage
.
getName
()
,
pos
.
getPosName
(),
pos
.
getBarcode
().
getBarcode
()});
// throw new BadRequestException("料仓[" + storage.getName() + "]的库位[" + pos.getPosName() + "]有料[" + pos.getBarcode() + "],删除失败");
}
}
...
...
@@ -195,16 +195,16 @@ public class StorageController {
}
private
Storage
saveStorage
(
Storage
storage
)
{
if
(
storage
.
getName
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"name"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"name"
}
);
// throw new BadRequestException("料仓名称不能为空");
}
if
(
storage
.
getCid
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"cid"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"cid"
}
);
// throw new BadRequestException("料仓编号不能为空");
}
if
(
storage
.
getType
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"type"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"type"
}
);
// throw new BadRequestException("料仓类型不能为空");
}
if
(
storage
.
getCompatibleType
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"compatibleType"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"compatibleType"
}
);
// throw new BadRequestException("料仓兼容性不能为空");
}
String
oldCid
=
""
;
...
...
@@ -215,11 +215,11 @@ public class StorageController {
)
{
if
(
isNew
||
(!
storage
.
getId
().
equals
(
s
.
getId
())))
{
if
(
s
.
getName
().
equals
(
storage
.
getName
())){
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"name"
,
storage
.
getName
()});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"name"
,
storage
.
getName
()});
// throw new BadRequestException("料仓名称["+storage.getCid()+"]已存在");
}
if
(
s
.
getCid
().
equals
(
storage
.
getCid
())){
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"cid"
,
storage
.
getCid
()});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"cid"
,
storage
.
getCid
()});
// throw new BadRequestException("料仓cid["+storage.getCid()+"]已存在");
}
}
...
...
@@ -248,7 +248,7 @@ public class StorageController {
String
image
=
"csv"
;
String
fileType
=
FileUtil
.
getExtensionName
(
uploadFile
.
getOriginalFilename
());
if
(
fileType
!=
null
&&
!
image
.
contains
(
fileType
)){
throw
new
ValidateException
(
"smfco
d
e.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
throw
new
ValidateException
(
"smfco
r
e.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
}
File
folder
=
new
File
(
properties
.
getPath
(),
"pos"
);
File
file
=
FileUtil
.
upload
(
uploadFile
,
folder
.
getAbsolutePath
());
...
...
@@ -262,7 +262,7 @@ public class StorageController {
log
.
info
(
"开始更新料仓【"
+
storageId
+
"】的位置信息"
);
if
(
Strings
.
isNullOrEmpty
(
storageId
))
{
log
.
error
(
"Storage id is null"
);
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"storageId"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"storageId"
}
);
}
Storage
storage
=
storageManager
.
get
(
storageId
);
if
(
storage
==
null
)
{
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
ee52703
...
...
@@ -102,7 +102,7 @@ public class StoragePosController {
}
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"cid"
,
cid
});
throw
new
ValidateException
(
"smfco
r
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"cid"
,
cid
});
}
List
<
StoragePos
>
allPos
=
storagePosManager
.
findByStorage
(
storage
.
getId
());
for
(
StoragePos
storagePos
:
allPos
...
...
@@ -110,7 +110,7 @@ public class StoragePosController {
if
(
storagePos
!=
null
)
{
Barcode
barcode
=
storagePos
.
getBarcode
();
if
(
barcode
!=
null
)
{
throw
new
ValidateException
(
"smfco
d
e.cannotRemove"
,
"删除库位失败,库位[{0}]中有料"
,
new
String
[]{
storagePos
.
getPosName
()});
throw
new
ValidateException
(
"smfco
r
e.cannotRemove"
,
"删除库位失败,库位[{0}]中有料"
,
new
String
[]{
storagePos
.
getPosName
()});
}
}
}
...
...
@@ -131,7 +131,7 @@ public class StoragePosController {
}
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"cid"
,
cid
});
throw
new
ValidateException
(
"smfco
r
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"cid"
,
cid
});
}
log
.
info
(
"开始手动清空料仓["
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"]的所有库位"
);
...
...
@@ -195,11 +195,11 @@ public class StoragePosController {
@PreAuthorize
(
"@el.check('storagePos:edit')"
)
public
ResultBean
enabledPos
(
@RequestBody
StoragePosEnabledDto
enabledDto
)
{
if
(
enabledDto
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
StoragePos
pos
=
storagePosDao
.
findOneById
(
enabledDto
.
getId
());
if
(
pos
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"PosId"
,
enabledDto
.
getId
()});
throw
new
ValidateException
(
"smfco
r
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"PosId"
,
enabledDto
.
getId
()});
// throw new ValidateException("未找到库位 ");
}
pos
.
setEnabled
(
enabledDto
.
isEnabled
());
...
...
@@ -215,14 +215,14 @@ public class StoragePosController {
@PreAuthorize
(
"@el.check('storagePos:edit')"
)
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
StoragePosSaveDto
saveDto
)
{
if
(
saveDto
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
if
(
saveDto
.
getPosName
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
StoragePos
pos
=
storagePosDao
.
findOneById
(
saveDto
.
getId
());
if
(
pos
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"PosId"
,
saveDto
.
getId
()});
throw
new
ValidateException
(
"smfco
r
e.valueNotFind"
,
"未找到{0}[{1}]"
,
new
String
[]{
"PosId"
,
saveDto
.
getId
()});
// throw new ValidateException("未找到库位 ");
}
pos
.
setPosName
(
saveDto
.
getPosName
());
...
...
@@ -249,7 +249,7 @@ public class StoragePosController {
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
}
storagePosManager
.
deletePoss
(
ids
);
...
...
@@ -304,7 +304,7 @@ public class StoragePosController {
public
ResultBean
checkout
(
@Validated
@RequestBody
CheckOutDto
checkOutDto
)
{
if
(
checkOutDto
.
getPids
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
});
}
if
(
checkOutDto
.
getSingleOut
()
==
null
)
{
checkOutDto
.
setSingleOut
(
true
+
""
);
...
...
@@ -315,19 +315,19 @@ public class StoragePosController {
for
(
String
pid
:
checkOutDto
.
getPids
())
{
StoragePos
pos
=
storagePosManager
.
get
(
pid
);
if
(
pos
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"pid"
,
pid
});
throw
new
ValidateException
(
"smfco
r
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"pid"
,
pid
});
// throw new ValidateException("位置[" + pid + "]不存在");
}
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"storageId"
,
pos
.
getStorageId
()});
throw
new
ValidateException
(
"smfco
r
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"storageId"
,
pos
.
getStorageId
()});
// throw new ValidateException("料仓[" + pos.getStorageId() + "]不存在");
}
log
.
info
(
"出库料仓【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
String
outResult
=
taskService
.
checkout
(
storage
,
pos
,
isSingleOut
,
SecurityUtils
.
getCurrentUsername
());
if
(!
Strings
.
isNullOrEmpty
(
outResult
))
{
throw
new
ValidateException
(
"smfco
d
e.error"
,
outResult
);
throw
new
ValidateException
(
"smfco
r
e.error"
,
outResult
);
}
}
return
ResultBean
.
newOkResult
(
""
);
...
...
@@ -372,14 +372,14 @@ public class StoragePosController {
dto
.
setAmount
(
codeBean
.
getBarcode
().
getAmount
());
if
(!
ObjectUtil
.
isEmpty
(
codeBean
.
getBarcode
().
getLockId
()))
{
codeBean
.
setError
(
"smfco
d
e.error.barcode.locked"
,
"库位[{0}]已被锁定"
);
codeBean
.
setError
(
"smfco
r
e.error.barcode.locked"
,
"库位[{0}]已被锁定"
);
}
// StoragePos pos = storagePosManager.getByPosName(dto.getPosName());
// Storage storage = dataCache.getStorageById(pos.getStorageId());
// //判断是否已在出库中
// DataLog task = taskService.findExecutingTask(storage.getCid(), pos.getPosName());
// if (task == null) {
// codeBean.setError("smfco
d
e.error.barcode.inQueue", new String[]{dto.getBarcode()}, "二维码[{0}]已在操作队列中");
// codeBean.setError("smfco
r
e.error.barcode.inQueue", new String[]{dto.getBarcode()}, "二维码[{0}]已在操作队列中");
// }
}
if
(
codeBean
.
getErrorCode
()
!=
null
)
{
...
...
@@ -387,7 +387,7 @@ public class StoragePosController {
dto
.
setError
(
error
);
}
}
else
{
String
error
=
MessageUtils
.
getText
(
"smfco
d
e.error.barcode.invalid"
,
new
String
[]{
code
},
servletRequest
.
getLocale
(),
"{0}不是有效的条码"
);
String
error
=
MessageUtils
.
getText
(
"smfco
r
e.error.barcode.invalid"
,
new
String
[]{
code
},
servletRequest
.
getLocale
(),
"{0}不是有效的条码"
);
dto
.
setError
(
error
);
}
return
dto
;
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/LabelManagerImpl.java
查看文件 @
ee52703
...
...
@@ -34,12 +34,12 @@ public class LabelManagerImpl implements ILabelManager {
logName
=
"修改标签:"
;
}
if
(
resources
.
getLabelName
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"labelName"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"labelName"
});
}
Query
que
=
new
Query
(
c
);
List
<
Label
>
groups
=
findByQuery
(
que
);
if
(
groups
!=
null
&&
groups
.
size
()
>
0
)
{
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"labelName"
,
resources
.
getLabelName
()});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"labelName"
,
resources
.
getLabelName
()});
}
Label
label
=
labelDao
.
save
(
resources
);
return
label
;
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
ee52703
...
...
@@ -277,7 +277,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
if
(
pos
.
getBarcode
()==
null
||
pos
.
getBarcode
().
equals
(
""
))
{
}
else
{
throw
new
ValidateException
(
"smfco
d
e.thePosIsused"
,
" 库位[{0}]有料[{1}],不能删除"
,
new
String
[]{
pos
.
getPosName
(),
pos
.
getBarcode
().
getBarcode
()});
throw
new
ValidateException
(
"smfco
r
e.thePosIsused"
,
" 库位[{0}]有料[{1}],不能删除"
,
new
String
[]{
pos
.
getPosName
(),
pos
.
getBarcode
().
getBarcode
()});
// throw new BadRequestException("库位[" + pos.getPosName() + "]中有料[" + pos.getBarcode() + "],不能删除");
}
delPosName
+=
"["
+
pos
.
getId
()+
"_"
+
pos
.
getPosName
()+
"]"
;
...
...
src/main/java/com/neotel/smfcore/core/system/rest/ClientSettingsController.java
查看文件 @
ee52703
...
...
@@ -34,7 +34,7 @@ public class ClientSettingsController {
public
ClientSettingDto
getSettings
(
ClientSettingDto
settingDto
)
{
if
(
settingDto
==
null
||
ObjectUtil
.
isEmpty
(
settingDto
.
getKey
())
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"key"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"key"
});
}
//先查找自己的用户名,没找到时再找admin
String
userName
=
SecurityUtils
.
getCurrentUsername
();
...
...
@@ -58,7 +58,7 @@ public class ClientSettingsController {
public
ResultBean
updateSettings
(
@RequestBody
ClientSettingDto
settingDto
)
{
if
(
settingDto
==
null
||
ObjectUtil
.
isEmpty
(
settingDto
.
getKey
())
||
ObjectUtil
.
isEmpty
(
settingDto
.
getValue
()))
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"key"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"key"
});
}
String
userName
=
SecurityUtils
.
getCurrentUsername
();
String
key
=
Constants
.
CACHE_clientSetting
+
"_"
+
userName
+
"_"
+
settingDto
.
getKey
();
...
...
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
查看文件 @
ee52703
...
...
@@ -54,19 +54,19 @@ public class SettingsController {
//
// if(settingsDto.getMaxHumidity()<=settingsDto.getMinHumidity()){
//
// throw new ValidateException("smfco
d
e.humidityValueError","温度范围数据错误" );
// throw new ValidateException("smfco
r
e.humidityValueError","温度范围数据错误" );
//// throw new BadRequestException("温度范围数据错误");
// }
// if(settingsDto.getMaxHumidityShow()<=settingsDto.getMinHumidityShow()){
// throw new ValidateException("smfco
d
e.humidityShowValueError","温度显示范围数据错误" );
// throw new ValidateException("smfco
r
e.humidityShowValueError","温度显示范围数据错误" );
//// throw new BadRequestException("温度显示范围数据错误");
// }
// if(settingsDto.getMaxTemperature()<=settingsDto.getMinTemperature()){
// throw new ValidateException("smfco
d
e.temperatureValueError","湿度范围数据错误" );
// throw new ValidateException("smfco
r
e.temperatureValueError","湿度范围数据错误" );
//// throw new BadRequestException("湿度范围数据错误");
// }
// if(settingsDto.getMaxTemperatureShow()<=settingsDto.getMinTemperatureShow()){
// throw new ValidateException("smfco
d
e.temperatureShowValueError","湿度显示范围数据错误" );
// throw new ValidateException("smfco
r
e.temperatureShowValueError","湿度显示范围数据错误" );
//// throw new BadRequestException("湿度显示范围数据错误");
// }
//
...
...
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
查看文件 @
ee52703
...
...
@@ -95,7 +95,7 @@ public class TaskController {
}
User
curruser
=
userManager
.
get
(
SecurityUtils
.
getCurrentUserId
());
if
(!
curruser
.
getGroups
().
contains
(
groupId
)){
throw
new
ValidateException
(
"smfco
d
e.nogroupaccess"
,
"没有组[{0}]的操作权限"
,
new
String
[]
{
groupId
});
throw
new
ValidateException
(
"smfco
r
e.nogroupaccess"
,
"没有组[{0}]的操作权限"
,
new
String
[]
{
groupId
});
}
return
getTaskList
(
groupId
,
null
);
}
...
...
src/main/java/com/neotel/smfcore/core/system/util/DevicesStatusUtil.java
查看文件 @
ee52703
...
...
@@ -116,7 +116,9 @@ public class DevicesStatusUtil {
public
static
Map
<
String
,
String
>
getAndRemoveOp
(
String
cid
){
Map
<
String
,
String
>
opMap
=
storageOpMap
.
get
(
cid
);
opMap
.
remove
(
cid
);
if
(
opMap
!=
null
){
opMap
.
remove
(
cid
);
}
return
opMap
;
}
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
ee52703
...
...
@@ -160,10 +160,10 @@ public class TaskService {
String
posName
=
taskToExecute
.
getPosName
();
if
(!
Strings
.
isNullOrEmpty
(
barcode
)
&&
task
.
getBarcode
().
equals
(
barcode
))
{
log
.
info
(
"二维码:["
+
barcode
+
"]已在操作队列中,操作失败"
);
throw
new
ValidateException
(
"smfco
d
e.error.barcode.inQueue"
,
"二维码[{0}]已在操作队列中,操作失败"
,
new
String
[]{
barcode
});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.inQueue"
,
"二维码[{0}]已在操作队列中,操作失败"
,
new
String
[]{
barcode
});
}
else
if
(
task
.
getPosName
().
equals
(
posName
)&&
ObjectUtil
.
isNotEmpty
(
posName
))
{
log
.
info
(
"位置:["
+
posName
+
"]已在操作队列中,操作失败"
);
throw
new
ValidateException
(
"smfco
d
e.error.pos.inQueue"
,
"位置:[{0}}]已在操作队列中,操作失败"
,
new
String
[]{
posName
});
throw
new
ValidateException
(
"smfco
r
e.error.pos.inQueue"
,
"位置:[{0}}]已在操作队列中,操作失败"
,
new
String
[]{
posName
});
}
}
updateQueueTask
(
taskToExecute
);
...
...
@@ -608,7 +608,7 @@ public class TaskService {
}
if
(
availbleStorageList
.
isEmpty
())
{
throw
new
ValidateException
(
"smfco
d
e.noValidStorage"
,
"料仓列表中未找到可用的料仓"
);
throw
new
ValidateException
(
"smfco
r
e.noValidStorage"
,
"料仓列表中未找到可用的料仓"
);
}
availbleStorageList
.
sort
(
new
Comparator
<
Storage
>()
{
...
...
@@ -658,7 +658,7 @@ public class TaskService {
private
Barcode
verifyBarcodePutIn
(
List
<
Storage
>
storageList
,
Barcode
barcodeSave
,
String
inRFID
)
throws
ValidateException
{
if
(
barcodeSave
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.error.barcode.invalid"
,
"条码无效"
);
throw
new
ValidateException
(
"smfco
r
e.error.barcode.invalid"
,
"条码无效"
);
}
StoragePos
pos
;
...
...
@@ -670,7 +670,7 @@ public class TaskService {
pos
=
storagePosManager
.
getByBarcodeId
(
barcodeSave
.
getId
());
if
(
barcodeSave
.
getAmount
()
<=
0
)
{
throw
new
ValidateException
(
"smfco
d
e.error.barcode.wrongQty"
,
"条码[{0}]对应的数量<=0为: {1}"
,
new
String
[]{
barcodeSave
.
getBarcode
(),
barcodeSave
.
getAmount
()
+
""
});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.wrongQty"
,
"条码[{0}]对应的数量<=0为: {1}"
,
new
String
[]{
barcodeSave
.
getBarcode
(),
barcodeSave
.
getAmount
()
+
""
});
}
}
...
...
@@ -680,7 +680,7 @@ public class TaskService {
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
checkout
(
storage
,
pos
,
true
,
""
);
throw
new
ValidateException
(
"smfco
d
e.error.barcode.exist"
,
"[{0}}]已在{1}}[{2}}]中"
,
new
String
[]{
barcodeSave
.
getBarcode
(),
storage
.
getName
(),
pos
.
getPosName
()});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.exist"
,
"[{0}}]已在{1}}[{2}}]中"
,
new
String
[]{
barcodeSave
.
getBarcode
(),
storage
.
getName
(),
pos
.
getPosName
()});
}
Collection
<
DataLog
>
queueTasks
=
getQueueTasks
();
...
...
@@ -698,7 +698,7 @@ public class TaskService {
return
barcodeSave
;
}
}
throw
new
ValidateException
(
"smfco
d
e.error.barcode.taskNotEnd"
,
"料盘[{0}}]的操作未完成,无法执行入库操作"
,
new
String
[]{
barcodeSave
.
getBarcode
()});
throw
new
ValidateException
(
"smfco
r
e.error.barcode.taskNotEnd"
,
"料盘[{0}}]的操作未完成,无法执行入库操作"
,
new
String
[]{
barcodeSave
.
getBarcode
()});
}
}
}
...
...
src/main/java/com/neotel/smfcore/hella/handler/HellaServiceHandler.java
查看文件 @
ee52703
...
...
@@ -285,7 +285,7 @@ public class HellaServiceHandler extends IoHandlerAdapter implements ITaskListen
String
codeStr
=
command
.
getData
().
toString
();
CodeBean
codeBean
=
codeResolve
.
resolveSingleCode
(
codeStr
);
if
(
codeBean
==
null
||
codeBean
.
getBarcode
()==
null
){
return
ResultBean
.
newErrorResult
(
1
,
"smfco
d
e.error.barcode.invalid"
,
"条码无效"
);
return
ResultBean
.
newErrorResult
(
1
,
"smfco
r
e.error.barcode.invalid"
,
"条码无效"
);
}
if
(
ObjectUtil
.
isNotEmpty
(
codeBean
.
getErrorCode
())
){
return
ResultBean
.
newErrorResult
(
1
,
codeBean
.
getErrorCode
(),
codeBean
.
getError
(),
codeBean
.
getParams
());
...
...
src/main/java/com/neotel/smfcore/security/rest/GroupController.java
查看文件 @
ee52703
...
...
@@ -131,11 +131,11 @@ public class GroupController {
public
ResponseEntity
<
Object
>
update
(
@RequestBody
GroupDto
groupDto
)
{
Group
resources
=
groupMapper
.
toEntity
(
groupDto
);
if
(
resources
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
User
curruser
=
userManager
.
get
(
SecurityUtils
.
getCurrentUserId
());
if
(!
curruser
.
hasGroup
(
resources
.
getId
())){
throw
new
ValidateException
(
"smfco
d
e.nogroupaccess"
,
"没有组[{0}]的操作权限"
,
new
String
[]
{
resources
.
getGroupName
()});
throw
new
ValidateException
(
"smfco
r
e.nogroupaccess"
,
"没有组[{0}]的操作权限"
,
new
String
[]
{
resources
.
getGroupName
()});
}
groupManager
.
saveGroup
(
resources
);
return
new
ResponseEntity
<>(
HttpStatus
.
NO_CONTENT
);
...
...
@@ -148,27 +148,27 @@ public class GroupController {
Set
<
Group
>
menuSet
=
new
HashSet
<>();
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
Group
group
=
groupManager
.
get
(
id
);
if
(
group
==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"group"
}
);
}
User
curruser
=
userManager
.
get
(
SecurityUtils
.
getCurrentUserId
());
if
(!
curruser
.
hasGroup
(
group
.
getId
())){
throw
new
ValidateException
(
"smfco
d
e.nogroupaccess"
,
"没有组[{0}]的操作权限"
,
new
String
[]
{
group
.
getGroupName
()});
throw
new
ValidateException
(
"smfco
r
e.nogroupaccess"
,
"没有组[{0}]的操作权限"
,
new
String
[]
{
group
.
getGroupName
()});
}
// //查找组下是否有设备
// Query query = new Query(Criteria.where("groupId").is(id));
// List<Storage> storages = storageManager.findByQuery(query);
// if (storages != null && storages.size() >= 1) {
// throw new ValidateException("smfco
d
e.groupWithStorage","组[{0}]已和设备关联",new String[]{group.getGroupName()});
// throw new ValidateException("smfco
r
e.groupWithStorage","组[{0}]已和设备关联",new String[]{group.getGroupName()});
// }
//
// Query userQuery = new Query(Criteria.where("groups").all(id));
// List<User> users = userManager.findByQuery(userQuery);
// if (users != null && users.size() >= 1) {
// throw new ValidateException("smfco
d
e.groupWithUser","组[{0}]已和用户关联",new String[]{group.getGroupName()});
// throw new ValidateException("smfco
r
e.groupWithUser","组[{0}]已和用户关联",new String[]{group.getGroupName()});
//// throw new ValidateException("删除失败,组[" + group.getGroupName() + "]已和用户关联");
// }
//删除关联
...
...
src/main/java/com/neotel/smfcore/security/rest/MenuController.java
查看文件 @
ee52703
...
...
@@ -164,7 +164,7 @@ public class MenuController {
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
MenuDto
menuDto
)
{
Menu
resources
=
menuMapper
.
toEntity
(
menuDto
);
if
(
resources
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
menuManager
.
saveMenu
(
resources
);
return
new
ResponseEntity
<>(
HttpStatus
.
NO_CONTENT
);
...
...
@@ -176,7 +176,7 @@ public class MenuController {
@PreAuthorize
(
"@el.check('menu:del')"
)
public
ResponseEntity
<
Object
>
delete
(
@RequestBody
Set
<
String
>
ids
)
{
if
(!
SecurityUtils
.
getCurrentUsername
().
equals
(
Constants
.
SUPER_USERNAME
)){
throw
new
ValidateException
(
"smfco
d
e.noAccessUpdate"
,
"没有删除菜单的权限"
);
throw
new
ValidateException
(
"smfco
r
e.noAccessUpdate"
,
"没有删除菜单的权限"
);
}
Set
<
Menu
>
menuSet
=
new
HashSet
<>();
for
(
String
id
:
ids
)
{
...
...
src/main/java/com/neotel/smfcore/security/rest/RoleController.java
查看文件 @
ee52703
...
...
@@ -109,7 +109,7 @@ public class RoleController {
Role
resources
=
roleMapper
.
toEntity
(
roleDto
);
Role
role
=
roleManager
.
get
(
resources
.
getId
());
if
(
resources
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
resources
.
setMenus
(
role
.
getMenus
());
roleManager
.
saveRole
(
resources
);
...
...
@@ -122,9 +122,9 @@ public class RoleController {
public
ResponseEntity
<
Object
>
updateMenu
(
@RequestBody
RoleDto
roleDto
)
{
Role
resources
=
roleMapper
.
toEntity
(
roleDto
);
if
(
resources
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
// throw new ValidateException("smfco
d
e.valueCanotNull","{0}不能为空",new String[]{"ID"} );
// throw new ValidateException("smfco
r
e.valueCanotNull","{0}不能为空",new String[]{"ID"} );
Role
role
=
roleManager
.
get
(
resources
.
getId
());
//判断ID是否存在
...
...
@@ -133,7 +133,7 @@ public class RoleController {
Query
query
=
new
Query
(
Criteria
.
where
(
"id"
).
in
(
menuIds
));
List
<
Menu
>
menus
=
menuManager
.
findByQuery
(
query
);
if
(
menus
==
null
&&(
menus
.
size
()!=
menuIds
.
size
())){
throw
new
ValidateException
(
"smfco
d
e.menuNotExist"
,
"菜单{0}不存在"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.menuNotExist"
,
"菜单{0}不存在"
,
new
String
[]{
"ID"
}
);
}
roleManager
.
updateMenu
(
resources
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
...
...
@@ -147,13 +147,13 @@ public class RoleController {
List
<
Role
>
roles
=
new
ArrayList
<
Role
>();
for
(
String
id
:
ids
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
Role
role
=
roleManager
.
get
(
id
);
// 验证是否被用户关联
List
<
User
>
users
=
userManager
.
findByRoleId
(
role
.
getId
());
if
(
users
!=
null
&&
users
.
size
()
>
0
)
{
throw
new
ValidateException
(
"smfco
d
e.roleCannotDel"
,
"角色[{0}]有[{1}]个用户关联改角色,不能删除"
,
new
String
[]{
role
.
getName
(),
users
.
size
()+
""
});
throw
new
ValidateException
(
"smfco
r
e.roleCannotDel"
,
"角色[{0}]有[{1}]个用户关联改角色,不能删除"
,
new
String
[]{
role
.
getName
(),
users
.
size
()+
""
});
}
roles
.
add
(
role
);
}
...
...
src/main/java/com/neotel/smfcore/security/rest/UserController.java
查看文件 @
ee52703
...
...
@@ -103,15 +103,15 @@ public class UserController {
public
ResponseEntity
<
Object
>
create
(
@Validated
@RequestBody
UserDto
userDto
)
{
User
resources
=
userMapper
.
toEntity
(
userDto
);
if
(
resources
.
getId
()
!=
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"ID"
,
resources
.
getId
()});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"ID"
,
resources
.
getId
()});
// throw new ValidateException("新增用户:ID已存在");
}
if
(
resources
.
getUsername
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"username"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"username"
}
);
// throw new ValidateException("新增用户:用户名不能为空");
}
if
(
resources
.
getRoleId
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"roleId"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"roleId"
}
);
// throw new ValidateException("新增用户:角色ID不能为空");
}
//判断用户名是否存在
...
...
@@ -139,13 +139,13 @@ public class UserController {
public
ResponseEntity
<
Object
>
update
(
@Validated
@RequestBody
UserDto
userDto
)
{
User
resources
=
userMapper
.
toEntity
(
userDto
);
if
(
resources
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
if
(
resources
.
getUsername
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"username"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"username"
}
);
}
if
(
resources
.
getRoleId
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"roleId"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"roleId"
}
);
}
userManager
.
update
(
resources
);
...
...
@@ -158,7 +158,7 @@ public class UserController {
@PreAuthorize
(
"@el.check('user:edit')"
)
public
ResultBean
resetPass
(
@RequestBody
String
id
)
{
if
(
id
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
User
resources
=
userManager
.
get
(
id
);
resources
.
setPassword
(
passwordEncoder
.
encode
(
Constants
.
USER_DEFAULTP_PWD
));
...
...
@@ -178,7 +178,7 @@ public class UserController {
public
ResultBean
center
(
@Validated
@RequestBody
UserDto
userDto
)
{
User
resources
=
userMapper
.
toEntity
(
userDto
);
if
(!
resources
.
getId
().
equals
(
SecurityUtils
.
getCurrentUserId
()))
{
throw
new
ValidateException
(
"smfco
d
e.hasNoAccess"
,
"无权限修改此用户信息"
);
throw
new
ValidateException
(
"smfco
r
e.hasNoAccess"
,
"无权限修改此用户信息"
);
// throw new ValidateException("不能修改他人资料");
}
userManager
.
updateCenter
(
resources
);
...
...
@@ -193,10 +193,10 @@ public class UserController {
String
oldPass
=
RsaUtils
.
decryptByPrivateKey
(
RsaProperties
.
privateKey
,
passVo
.
getOldPass
());
String
newPass
=
RsaUtils
.
decryptByPrivateKey
(
RsaProperties
.
privateKey
,
passVo
.
getNewPass
());
if
(!
passwordEncoder
.
matches
(
oldPass
,
user
.
getPassword
()))
{
throw
new
ValidateException
(
"smfco
d
e.oldPwdError"
,
"修改失败,旧密码错误"
);
throw
new
ValidateException
(
"smfco
r
e.oldPwdError"
,
"修改失败,旧密码错误"
);
}
if
(
passwordEncoder
.
matches
(
newPass
,
user
.
getPassword
()))
{
throw
new
ValidateException
(
"smfco
d
e.newPwdError"
,
"新密码不能与旧密码相同"
);
throw
new
ValidateException
(
"smfco
r
e.newPwdError"
,
"新密码不能与旧密码相同"
);
}
userManager
.
updatePass
(
user
.
getUsername
(),
passwordEncoder
.
encode
(
newPass
));
return
ResultBean
.
newOkResult
(
""
);
...
...
@@ -210,13 +210,13 @@ public class UserController {
//不能删除自己
String
currId
=
SecurityUtils
.
getCurrentUserId
();
if
(
currId
==
id
)
{
throw
new
ValidateException
(
"smfco
d
e.canotDelSelf"
,
"删除用户:不能删除自己"
);
throw
new
ValidateException
(
"smfco
r
e.canotDelSelf"
,
"删除用户:不能删除自己"
);
}
User
user
=
userManager
.
get
(
id
);
//admin的用户不让删除
if
(
user
.
getUsername
().
equals
(
Constants
.
SUPER_USERNAME
))
{
throw
new
ValidateException
(
"smfco
d
e.canotDelUser"
,
"删除用户:此用户不能删除"
);
throw
new
ValidateException
(
"smfco
r
e.canotDelUser"
,
"删除用户:此用户不能删除"
);
// throw new ValidateException("删除用户:此用户不能删除");
}
}
...
...
@@ -233,7 +233,7 @@ public class UserController {
// String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, user.getPassword());
// User myUser = userManager.findByUserName(SecurityUtils.getCurrentUsername());
// if (!passwordEncoder.matches(password, myUser.getPassword())) {
// throw new ValidateException("smfco
d
e.pwdError","修改邮箱失败,密码错误");
// throw new ValidateException("smfco
r
e.pwdError","修改邮箱失败,密码错误");
// }
//// verificationCodeService.validated(CodeEnum.EMAIL_RESET_EMAIL_CODE.getKey() + user.getEmail(), code);
// userManager.updateEmail(myUser.getUsername(), myUser.getEmail());
...
...
@@ -245,7 +245,7 @@ public class UserController {
public
ResponseEntity
<
Object
>
updateGroup
(
@RequestBody
UserDto
userDto
)
{
User
resources
=
userMapper
.
toEntity
(
userDto
);
if
(
resources
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
// throw new ValidateException("修改用户组:ID不能为空");
}
User
user
=
userManager
.
get
(
resources
.
getId
());
...
...
@@ -261,7 +261,7 @@ public class UserController {
String
image
=
"csv"
;
String
fileType
=
FileUtil
.
getExtensionName
(
uploadFile
.
getOriginalFilename
());
if
(
fileType
!=
null
&&
!
image
.
contains
(
fileType
)){
throw
new
ValidateException
(
"smfco
d
e.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
throw
new
ValidateException
(
"smfco
r
e.feleFormatError"
,
"文件格式错误!, 仅支持{0}格式"
,
new
String
[]{
image
});
}
File
folder
=
new
File
(
properties
.
getPath
(),
"user"
);
File
file
=
FileUtil
.
upload
(
uploadFile
,
folder
.
getAbsolutePath
());
...
...
src/main/java/com/neotel/smfcore/security/service/UserDetailsServiceImpl.java
查看文件 @
ee52703
...
...
@@ -76,16 +76,16 @@ public class UserDetailsServiceImpl implements UserDetailsService {
user
=
userManager
.
findByUserName
(
username
);
}
catch
(
EntityNotFoundException
e
)
{
// SpringSecurity会自动转换UsernameNotFoundException为BadCredentialsException
throw
new
ValidateException
(
"smfco
d
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"username"
,
username
});
throw
new
ValidateException
(
"smfco
r
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"username"
,
username
});
}
if
(
user
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"username"
,
username
});
throw
new
ValidateException
(
"smfco
r
e.valueNotExist"
,
"{0}[{1}]不存在"
,
new
String
[]{
"username"
,
username
});
}
else
{
if
(
user
.
getEnabled
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.notActivated"
,
"账号未激活"
);
throw
new
ValidateException
(
"smfco
r
e.notActivated"
,
"账号未激活"
);
}
if
(!
user
.
getEnabled
())
{
throw
new
ValidateException
(
"smfco
d
e.notActivated"
,
"账号未激活"
);
throw
new
ValidateException
(
"smfco
r
e.notActivated"
,
"账号未激活"
);
}
if
(
user
.
getUsername
().
equals
(
Constants
.
SUPER_USERNAME
)){
...
...
@@ -93,7 +93,7 @@ public class UserDetailsServiceImpl implements UserDetailsService {
//判断激活码是否正确
String
code
=
Md5Utls
.
getMd5
(
user
.
getId
(),
user
.
getCreateDate
());
if
(!
code
.
equals
(
user
.
getCheckCode
()))
{
throw
new
ValidateException
(
"smfco
d
e.notActivated"
,
"账号未激活"
);
throw
new
ValidateException
(
"smfco
r
e.notActivated"
,
"账号未激活"
);
}
}
List
<
Long
>
dataScopes
=
new
ArrayList
<>();
...
...
src/main/java/com/neotel/smfcore/security/service/manager/impl/GroupManagerImpl.java
查看文件 @
ee52703
...
...
@@ -54,14 +54,14 @@ public class GroupManagerImpl implements IGroupManager {
logName
=
"修改分组:"
;
}
if
(
resources
.
getGroupName
()
==
null
)
{
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"groupName"
});
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"groupName"
});
// throw new BadRequestException(logName+"组名称不能为空");
}
Query
que
=
new
Query
(
c
);
List
<
Group
>
groups
=
findByQuery
(
que
);
if
(
groups
!=
null
&&
groups
.
size
()
>
0
)
{
// throw new ValidateException(logName+"组名称[" + resources.getGroupName() + "]已存在");
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"groupname"
,
resources
.
getGroupName
()});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"groupname"
,
resources
.
getGroupName
()});
}
Group
group
=
groupDao
.
save
(
resources
);
//同时将组添加到超级管理员用户的权限中
...
...
src/main/java/com/neotel/smfcore/security/service/manager/impl/MenuManagerImpl.java
查看文件 @
ee52703
...
...
@@ -266,11 +266,11 @@ public class MenuManagerImpl implements IMenuManager {
if
(
menu
.
getType
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"Type"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"Type"
}
);
// throw new BadRequestException("菜单类型不能为空");
}
if
(
menu
.
getTitle
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"Title"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"Title"
}
);
// throw new BadRequestException( "菜单标题不能为空");
}
if
(
menu
.
getChildren
()==
null
){
...
...
@@ -307,7 +307,7 @@ public class MenuManagerImpl implements IMenuManager {
//菜单path不能重复
Menu
pathMenu
=
menuDao
.
findOne
(
quer
);
if
(
pathMenu
!=
null
){
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"path"
,
pathMenu
.
getPath
()});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"path"
,
pathMenu
.
getPath
()});
// throw new BadRequestException("路径["+pathMenu+"]已存在");
}
...
...
src/main/java/com/neotel/smfcore/security/service/manager/impl/RoleManagerImpl.java
查看文件 @
ee52703
...
...
@@ -80,7 +80,7 @@ public class RoleManagerImpl implements IRoleManager {
@Override
public
Role
saveRole
(
Role
role
)
throws
ValidateException
{
if
(
role
.
getName
()==
null
){
throw
new
ValidateException
(
"smfco
d
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"name"
}
);
throw
new
ValidateException
(
"smfco
r
e.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"name"
}
);
// throw new BadRequestException("角色名称不能为空");
}
if
(
role
.
getMenus
()
==
null
)
{
...
...
@@ -102,7 +102,7 @@ public class RoleManagerImpl implements IRoleManager {
log
.
error
(
logName
+
"["
+
role
.
toString
()
+
"]出错:角色名["
+
role
.
getName
()
+
"]已存在"
);
// throw new ValidateException(logName+"角色名[" + role.getName() + "]已存在");
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"name"
,
role
.
getName
()});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"name"
,
role
.
getName
()});
}
return
roleDao
.
save
(
role
);
}
...
...
@@ -111,12 +111,12 @@ public class RoleManagerImpl implements IRoleManager {
Role
role
=
this
.
get
(
resources
.
getId
());
if
(
role
==
null
){
throw
new
ValidateException
(
"smfco
d
e.notSelRole"
,
"请要修改的选择角色"
);
throw
new
ValidateException
(
"smfco
r
e.notSelRole"
,
"请要修改的选择角色"
);
// throw new BadRequestException("请要修改的选择角色");
}
if
(
role
.
getName
().
equals
(
"admin"
)){
if
(!
SecurityUtils
.
getCurrentUsername
().
equals
(
Constants
.
SUPER_USERNAME
)){
throw
new
ValidateException
(
"smfco
d
e.noaccess"
,
"无权限修改此角色的菜单"
);
throw
new
ValidateException
(
"smfco
r
e.noaccess"
,
"无权限修改此角色的菜单"
);
// throw new BadRequestException("只有超级管理员才能修改此角色的菜单");
}
}
...
...
src/main/java/com/neotel/smfcore/security/service/manager/impl/UserManagerImpl.java
查看文件 @
ee52703
...
...
@@ -61,7 +61,7 @@ public class UserManagerImpl implements IUserManager {
}
List
<
User
>
users
=
userDao
.
findByQuery
(
query
);
if
(
users
!=
null
&&
users
.
size
()>
0
){
throw
new
ValidateException
(
"smfco
d
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"userName"
,
username
});
throw
new
ValidateException
(
"smfco
r
e.valueAlreadyExist"
,
"{0}[{1}]已存在"
,
new
String
[]{
"userName"
,
username
});
}
}
@Override
...
...
@@ -84,7 +84,7 @@ public class UserManagerImpl implements IUserManager {
}
if
(
user
.
getUsername
().
equals
(
Constants
.
SUPER_USERNAME
))
{
if
(!
user
.
getId
().
equals
(
SecurityUtils
.
getCurrentUserId
()))
{
throw
new
ValidateException
(
"smfco
d
e.hasNoAccess"
,
"无权限修改此用户信息"
);
throw
new
ValidateException
(
"smfco
r
e.hasNoAccess"
,
"无权限修改此用户信息"
);
// throw new ValidateException("无权限修改此用户信息");
}
}
...
...
src/main/resources/messages.properties
查看文件 @
ee52703
smfco
d
e.valueCanotNull
=
{0}
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfco
d
e.feleFormatError
=
\u6587\u
4EF6
\u
683C
\u
5F0F
\u9519\u
8BEF
\u
FF01,
\u
4EC5
\u
652F
\u6301
{0}
\u
683C
\u
5F0F
smfco
d
e.valueAlreadyExist
=
{0}[{1}]
\u
5DF2
\u
5B58
\u5728
smfco
d
e.valueNotExist
=
{0}[{1}]
\u
4E0D
\u
5B58
\u5728
smfco
d
e.fileToLong
=
\u6587\u
4EF6
\u
8D85
\u
51FA
\u
89C4
\u
5B9A
\u5927\u
5C0F
smfco
d
e.fileError
=
\u6587\u
4EF6
\u
89E3
\u6790\u5931\u
8D25
smfco
d
e.valueNotFind
=
\u
672A
\u
627E
\u5230
{0}[{1}]
smfco
d
e.humidityValueError
=
\u
6E29
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
d
e.humidityShowValueError
=
\u
6E29
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
d
e.temperatureValueError
=
\u
6E7F
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
d
e.temperatureShowValueError
=
\u
6E7F
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
d
e.notActivated
=
\u
8D26
\u
53F7
\u
672A
\u
6FC0
\u
6D3B
smfco
d
e.userInfoError
=
\u7528\u6237\u
4FE1
\u
606F
\u
4E0D
\u
5B8C
\u6574
smfco
d
e.noaccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u
89D2
\u8272\u7684\u
83DC
\u5355
smfco
d
e.notSelRole
=
\u
8BF7
\u8981\u
4FEE
\u6539\u7684\u9009\u
62E9
\u
89D2
\u8272
smfco
d
e.posIsused
=
\u6599\u
4ED3[{0}]
\u7684\u
5E93
\u
4F4D[{1}}]
\u6709\u6599
[{2}],
\u5220\u9664\u5931\u
8D25
smfco
d
e.thePosIsused
=
\u
5E93
\u
4F4D[{0}]
\u6709\u6599
[{1}],
\u
4E0D
\u
80FD
\u5220\u9664
smfco
d
e.groupWithStorage
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u
8BBE
\u5907\u5173\u8054
smfco
d
e.groupWithUser
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u7528\u6237\u5173\u8054
smfco
d
e.canotDelSelf
=
\u5220\u9664\u7528\u6237\u
FF1A
\u
4E0D
\u
80FD
\u5220\u9664\u
81EA
\u
5DF1
smfco
d
e.canotDelUser
=
\u5220\u9664\u7528\u6237\u
FF1A
\u
6B64
\u7528\u6237\u
4E0D
\u
80FD
\u5220\u9664
smfco
d
e.oldPwdError
=
\u
4FEE
\u6539\u5931\u
8D25
\u
FF0C
\u
65E7
\u
5BC6
\u7801\u9519\u
8BEF
smfco
d
e.newPwdError
=
\u
65B0
\u
5BC6
\u7801\u
4E0D
\u
80FD
\u
4E0E
\u
65E7
\u
5BC6
\u7801\u
76F8
\u
540C
smfco
d
e.pwdError
=
\u
4FEE
\u6539\u
90AE
\u
7BB1
\u5931\u
8D25
\u
FF0C
\u
5BC6
\u7801\u9519\u
8BEF
smfco
d
e.hasNoAccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u7528\u6237\u
4FE1
\u
606F
smfco
d
e.noAccessUpdate
=
\u
6CA1
\u6709\u5220\u9664\u
83DC
\u5355\u7684\u6743\u9650
smfco
d
e.roleCannotDel
=
\u
89D2
\u8272
[{0}]
\u6709
[{1}]
\u
4E2A
\u7528\u6237\u5173\u8054\u6539\u
89D2
\u8272
,
\u
4E0D
\u
80FD
\u5220\u9664
smfco
r
e.valueCanotNull
=
{0}
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfco
r
e.feleFormatError
=
\u6587\u
4EF6
\u
683C
\u
5F0F
\u9519\u
8BEF
\u
FF01,
\u
4EC5
\u
652F
\u6301
{0}
\u
683C
\u
5F0F
smfco
r
e.valueAlreadyExist
=
{0}[{1}]
\u
5DF2
\u
5B58
\u5728
smfco
r
e.valueNotExist
=
{0}[{1}]
\u
4E0D
\u
5B58
\u5728
smfco
r
e.fileToLong
=
\u6587\u
4EF6
\u
8D85
\u
51FA
\u
89C4
\u
5B9A
\u5927\u
5C0F
smfco
r
e.fileError
=
\u6587\u
4EF6
\u
89E3
\u6790\u5931\u
8D25
smfco
r
e.valueNotFind
=
\u
672A
\u
627E
\u5230
{0}[{1}]
smfco
r
e.humidityValueError
=
\u
6E29
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
r
e.humidityShowValueError
=
\u
6E29
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
r
e.temperatureValueError
=
\u
6E7F
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
r
e.temperatureShowValueError
=
\u
6E7F
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
r
e.notActivated
=
\u
8D26
\u
53F7
\u
672A
\u
6FC0
\u
6D3B
smfco
r
e.userInfoError
=
\u7528\u6237\u
4FE1
\u
606F
\u
4E0D
\u
5B8C
\u6574
smfco
r
e.noaccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u
89D2
\u8272\u7684\u
83DC
\u5355
smfco
r
e.notSelRole
=
\u
8BF7
\u8981\u
4FEE
\u6539\u7684\u9009\u
62E9
\u
89D2
\u8272
smfco
r
e.posIsused
=
\u6599\u
4ED3[{0}]
\u7684\u
5E93
\u
4F4D[{1}}]
\u6709\u6599
[{2}],
\u5220\u9664\u5931\u
8D25
smfco
r
e.thePosIsused
=
\u
5E93
\u
4F4D[{0}]
\u6709\u6599
[{1}],
\u
4E0D
\u
80FD
\u5220\u9664
smfco
r
e.groupWithStorage
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u
8BBE
\u5907\u5173\u8054
smfco
r
e.groupWithUser
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u7528\u6237\u5173\u8054
smfco
r
e.canotDelSelf
=
\u5220\u9664\u7528\u6237\u
FF1A
\u
4E0D
\u
80FD
\u5220\u9664\u
81EA
\u
5DF1
smfco
r
e.canotDelUser
=
\u5220\u9664\u7528\u6237\u
FF1A
\u
6B64
\u7528\u6237\u
4E0D
\u
80FD
\u5220\u9664
smfco
r
e.oldPwdError
=
\u
4FEE
\u6539\u5931\u
8D25
\u
FF0C
\u
65E7
\u
5BC6
\u7801\u9519\u
8BEF
smfco
r
e.newPwdError
=
\u
65B0
\u
5BC6
\u7801\u
4E0D
\u
80FD
\u
4E0E
\u
65E7
\u
5BC6
\u7801\u
76F8
\u
540C
smfco
r
e.pwdError
=
\u
4FEE
\u6539\u
90AE
\u
7BB1
\u5931\u
8D25
\u
FF0C
\u
5BC6
\u7801\u9519\u
8BEF
smfco
r
e.hasNoAccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u7528\u6237\u
4FE1
\u
606F
smfco
r
e.noAccessUpdate
=
\u
6CA1
\u6709\u5220\u9664\u
83DC
\u5355\u7684\u6743\u9650
smfco
r
e.roleCannotDel
=
\u
89D2
\u8272
[{0}]
\u6709
[{1}]
\u
4E2A
\u7528\u6237\u5173\u8054\u6539\u
89D2
\u8272
,
\u
4E0D
\u
80FD
\u5220\u9664
smfcore.notFindPos
=
\u
672A
\u
627E
\u5230\u9501\u
5B9A
\u
5E93
\u
4F4D
smfcore.error.barcode.empty
=
\u
672A
\u
626B
\u5230\u6761\u7801
smfcore.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
4E2A
\u6709\u6548\u6761\u7801
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfcore.error.barcode.expired
=
\u7269\u6599\u
5DF2
\u
8FC7
\u
671F,
\u
65E0
\u
6CD5
\u5165\u
5E93.
smfcore.allBoxView.noReel
=
\u
5E93
\u
4F4D{0}
\u
4E2D
\u
65E0
\u7269\u6599
smfco
d
e.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
4E2A
\u6709\u6548\u7684\u6761\u7801
smfco
d
e.error.barcode.noValidCode
=
\u
65E0
\u6548\u7684\u6761\u7801
smfco
r
e.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
4E2A
\u6709\u6548\u7684\u6761\u7801
smfco
r
e.error.barcode.noValidCode
=
\u
65E0
\u6548\u7684\u6761\u7801
smfcore.error.barcode.noValidCode
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
smfco
d
e.error.barcode.executing
=
\u6761\u7801
[{0}}]
\u
4EFB
\u
52A1
\u
6B63
\u5728\u6267\u
884C
smfco
d
e.error.pos.notExist
=
\u
5E93
\u
4F4D[{0}]
\u
4E0D
\u
5B58
\u5728
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
d
e.error.pos.wrong
=
\u
5E93
\u
4F4D[{0}]
\u
4E0E
\u6599\u
4ED3[{1}}]
\u
4E0D
\u5339\u
914D,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
d
e.error.pos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
d
e.error.pos.sizeNotMatch
=
\u6599\u
76D8
\u
5C3A
\u
5BF8[{0}}]
\u
4E0E
\u
5E93
\u
4F4D{1}
\u
5C3A
\u
5BF8[{2}]
\u
4E0D
\u
7B26,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
d
e.error.storage.offline
=
\u6599\u
4ED3[{0}]
\u
79BB
\u
7EBF
smfco
d
e.error.barcode.invalid
=
\u6761\u7801\u
65E0
\u6548
smfco
d
e.error.barcode.wrongSize
=
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
smfco
d
e.error.barcode.wrongQty
=
\u6761\u7801
[{0}]
\u
5BF9
\u
5E94
\u7684\u6570\u
91CF<=0
\u
4E3A: {1}
smfco
d
e.error.barcode.taskNotEnd
=
\u6599\u
76D8[{0}]
\u7684\u
64CD
\u
4F5C
\u
672A
\u
5B8C
\u6210
,
\u
65E0
\u
6CD5
\u6267\u
884C
\u5165\u
5E93
\u
64CD
\u
4F5C
smfco
d
e.error.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfco
r
e.error.barcode.executing
=
\u6761\u7801
[{0}}]
\u
4EFB
\u
52A1
\u
6B63
\u5728\u6267\u
884C
smfco
r
e.error.pos.notExist
=
\u
5E93
\u
4F4D[{0}]
\u
4E0D
\u
5B58
\u5728
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
r
e.error.pos.wrong
=
\u
5E93
\u
4F4D[{0}]
\u
4E0E
\u6599\u
4ED3[{1}}]
\u
4E0D
\u5339\u
914D,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
r
e.error.pos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
r
e.error.pos.sizeNotMatch
=
\u6599\u
76D8
\u
5C3A
\u
5BF8[{0}}]
\u
4E0E
\u
5E93
\u
4F4D{1}
\u
5C3A
\u
5BF8[{2}]
\u
4E0D
\u
7B26,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
r
e.error.storage.offline
=
\u6599\u
4ED3[{0}]
\u
79BB
\u
7EBF
smfco
r
e.error.barcode.invalid
=
\u6761\u7801\u
65E0
\u6548
smfco
r
e.error.barcode.wrongSize
=
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
smfco
r
e.error.barcode.wrongQty
=
\u6761\u7801
[{0}]
\u
5BF9
\u
5E94
\u7684\u6570\u
91CF<=0
\u
4E3A: {1}
smfco
r
e.error.barcode.taskNotEnd
=
\u6599\u
76D8[{0}]
\u7684\u
64CD
\u
4F5C
\u
672A
\u
5B8C
\u6210
,
\u
65E0
\u
6CD5
\u6267\u
884C
\u5165\u
5E93
\u
64CD
\u
4F5C
smfco
r
e.error.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfcore.storage.error.notExist
=
\u
672A
\u
627E
\u5230\u6599\u
4ED3{0}
smfco
d
e.error.barcode.inQueue
=
\u
4E8C
\u
7EF4
\u7801
[{0}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D
\u
FF0C
\u
64CD
\u
4F5C
\u5931\u
8D25
smfco
d
e.error.pos.inQueue
=
\u
4F4D
\u
7F6E:[{0}}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D,
\u
64CD
\u
4F5C
\u5931\u
8D25
smfco
d
e.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfco
r
e.error.barcode.inQueue
=
\u
4E8C
\u
7EF4
\u7801
[{0}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D
\u
FF0C
\u
64CD
\u
4F5C
\u5931\u
8D25
smfco
r
e.error.pos.inQueue
=
\u
4F4D
\u
7F6E:[{0}}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D,
\u
64CD
\u
4F5C
\u5931\u
8D25
smfco
r
e.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfcore.conotUpdate
=
\u7528\u6237\u
540Dadmin
\u
4E0D
\u
80FD
\u
4FEE
\u6539
smfcore.unfinished
=
\u6761\u7801
[{0}]
\u7684\u
4EFB
\u
52A1
\u
8FD8
\u
672A
\u
7ED3
\u
675F
smfcore.ok
=
ok
...
...
@@ -77,15 +77,15 @@ smfcore.taskLog=\u7269\u6599\u65E5\u5FD7
smfcore.user
=
\u7528\u6237\u
7BA1
\u7406
smfcore.peoples
=
\u7528\u6237\u
7BA1
\u7406
smfcore.role
=
\u
89D2
\u8272\u
7BA1
\u7406
smfco
d
e.menuNotExist
=
\u
83DC
\u5355
{0}
\u
4E0D
\u
5B58
\u5728
smfco
d
e.noValidStorage
=
\u6599\u
4ED3
\u5217\u8868\u
4E2D
\u
672A
\u
627E
\u5230\u
53EF
\u7528\u7684\u6599\u
4ED3
smfco
d
e.error.barcode.exist
=
[{0}}]
\u
5DF2
\u5728
{1}}[{2}}]
\u
4E2D
smfco
r
e.menuNotExist
=
\u
83DC
\u5355
{0}
\u
4E0D
\u
5B58
\u5728
smfco
r
e.noValidStorage
=
\u6599\u
4ED3
\u5217\u8868\u
4E2D
\u
672A
\u
627E
\u5230\u
53EF
\u7528\u7684\u6599\u
4ED3
smfco
r
e.error.barcode.exist
=
[{0}}]
\u
5DF2
\u5728
{1}}[{2}}]
\u
4E2D
smfcore.barcodeSetting
=
\u6761\u7801\u
8BBE
\u
7F6E
smfcore.posNotExist
=
\u
4ED3
\u
4F4D
\u
4E0D
\u
5B58
\u5728
smfcore.error
=
\u
51FA
\u9519
{0}
smfcore.userManager
=
\u7528\u6237\u
7BA1
\u7406
smfco
d
e.cannotRemove
=
\u5220\u9664\u
5E93
\u
4F4D
\u5931\u
8D25
\u
FF0C
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u6709\u6599
smfco
d
e.nogroupaccess=
\u
6CA1
\u6709\u
7EC4[{0}]
\u7684\u
64CD
\u
4F5C
\u6743\u9650
smfco
r
e.cannotRemove
=
\u5220\u9664\u
5E93
\u
4F4D
\u5931\u
8D25
\u
FF0C
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u6709\u6599
smfco
r
e.nogroupaccess=
\u
6CA1
\u6709\u
7EC4[{0}]
\u7684\u
64CD
\u
4F5C
\u6743\u9650
smfcore.outSetting
=
\u
51FA
\u
5E93
\u
7B56
\u7565
smfcore.sysSetting
=
\u
7CFB
\u
7EDF
\u
8BBE
\u
7F6E
smfcore.help
=
\u
5E2E
\u
52A9
...
...
@@ -93,53 +93,58 @@ smfcore.instruction=\u8BF4\u660E\u4E66
smfcore.about
=
\u5173\u
4E8E
smfcore.tacticsOuput
=
\u
7B56
\u7565\u
51FA
\u
5E93
smfcore.labelOuput
=
\u7269\u6599\u5206\u
7EC4
smfco
d
e.order.out.executing
=
\u
5DE5
\u5355\u
6B63
\u5728\u6267\u
884C
smfco
d
e.order.out.notFound
=
\u
5DE5
\u5355\u
672A
\u
627E
\u5230
smfco
d
e.order.out.maxOrder
=
\u
5DF2
\u
8FBE
\u5230\u6700\u5927\u
53EF
\u6267\u
884C
\u
5DE5
\u5355\u6570
smfco
d
e.order.out.noTask
=
\u
5DE5
\u5355\u
65E0
\u
53EF
\u6267\u
884C
\u7684\u
4EFB
\u
52A1
smfco
d
e.cannotUpdateOrderNum
=
\u
5DE5
\u5355\u
5DF2
\u
51FA
\u
5E93
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u6570\u
91CF
smfco
d
e.order.close.success
=
\u
5DE5
\u5355\u5173\u
95ED
\u6210\u
529F
smfco
d
e.order.close.taskNotEnd
=
\u
5DE5
\u5355\u
8FD8
\u6709\u
672A
\u
5B8C
\u6210\u7684\u
4EFB
\u
52A1
smfco
r
e.order.out.executing
=
\u
5DE5
\u5355\u
6B63
\u5728\u6267\u
884C
smfco
r
e.order.out.notFound
=
\u
5DE5
\u5355\u
672A
\u
627E
\u5230
smfco
r
e.order.out.maxOrder
=
\u
5DF2
\u
8FBE
\u5230\u6700\u5927\u
53EF
\u6267\u
884C
\u
5DE5
\u5355\u6570
smfco
r
e.order.out.noTask
=
\u
5DE5
\u5355\u
65E0
\u
53EF
\u6267\u
884C
\u7684\u
4EFB
\u
52A1
smfco
r
e.cannotUpdateOrderNum
=
\u
5DE5
\u5355\u
5DF2
\u
51FA
\u
5E93
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u6570\u
91CF
smfco
r
e.order.close.success
=
\u
5DE5
\u5355\u5173\u
95ED
\u6210\u
529F
smfco
r
e.order.close.taskNotEnd
=
\u
5DE5
\u5355\u
8FD8
\u6709\u
672A
\u
5B8C
\u6210\u7684\u
4EFB
\u
52A1
smfcore.manualOut
=
\u
624B
\u
52A8
\u
51FA
\u
5E93
smfco
d
e.error.barcode.noRules
=
\u
89E3
\u6790\u
89C4
\u5219\u
672A
\u
5B9A
\u
4E49
smfco
d
e.error.barcode.wrongLength
=
\u6761\u7801
[{0}]
\u
957F
\u
5EA6
\u9519\u
8BEF
smfco
d
e.error.barcode.noField
=
\u6761\u7801\u
89E3
\u6790\u5931\u
8D25,
\u
672A
\u
627E
\u5230
{0}
\u
5B57
\u
6BB5
smfco
d
e.error.barcode.pnNotExist
=
x
\u6863\u6848
{0}
\u
4E0D
\u
5B58
\u5728
smfco
d
e.error.barcode.invalid
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
smfco
d
e.error.barcode.locked
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u
88AB
\u9501\u
5B9A
smfco
d
e.manualOut.ok
=
\u
624B
\u
52A8
\u
51FA
\u
5E93
\u6210\u
529F
smfco
d
e.manualOut.notFound
=
\u
4ED3
\u
5E93
\u
4E2D
\u
672A
\u
627E
\u5230\u6599\u
76D8
\u
4FE1
\u
606F
smfco
d
e.order.lineCanotNull
=
\u
7EBF
\u
522B
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfco
d
e.order.cannotUpdateLine
=
\u
5DE5
\u5355\u
5DF2
\u
51FA
\u
5E93
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u
7EBF
\u
522B
smfco
d
e.order.uploadOK
=
\u
5DE5
\u5355\u
4E0A
\u
4F20
\u6210\u
529F
smfco
d
e.order.ameExists
=
\u
5DE5
\u5355\u
540D
\u
79F0[{0}]
\u
5DF2
\u
5B58
\u5728
smfco
d
e.order.hasClose
=
\u
5DE5
\u5355\u
5DF2
\u5173\u
95ED
smfco
d
e.order.supplementOutFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5E93
\u7684\u8865\u6599
smfco
d
e.materialBox.quantityshort=
\u7269\u6599\u6570\u
91CF
\u
4E0D
\u
8DB3
smfco
d
e.materialBox.invalid
=
\u
672A
\u
627E
\u5230\u6599\u
76D2
\u
4FE1
\u
606F{0}
smfco
d
e.materialBox.noReel
=
\u6599\u
76D2
\u
4E2D
\u
672A
\u
627E
\u5230\u
5BF9
\u
5E94
\u7269\u6599
smfco
d
e.materialBox.boxNoReel
=
\u6599\u
76D2
\u
4E2D
\u
65E0
\u7269\u6599
smfco
d
e.materialBox.inPos
=
\u7269\u6599\u
5DF2
\u5728\u
5E93
\u
4F4D{0}
\u
4E2D
smfco
d
e.materialBox.inOtherBox
=
\u7269\u6599\u
5DF2
\u5728\u6599\u
76D2{0}
\u
4E2D
smfco
r
e.error.barcode.noRules
=
\u
89E3
\u6790\u
89C4
\u5219\u
672A
\u
5B9A
\u
4E49
smfco
r
e.error.barcode.wrongLength
=
\u6761\u7801
[{0}]
\u
957F
\u
5EA6
\u9519\u
8BEF
smfco
r
e.error.barcode.noField
=
\u6761\u7801\u
89E3
\u6790\u5931\u
8D25,
\u
672A
\u
627E
\u5230
{0}
\u
5B57
\u
6BB5
smfco
r
e.error.barcode.pnNotExist
=
x
\u6863\u6848
{0}
\u
4E0D
\u
5B58
\u5728
smfco
r
e.error.barcode.invalid
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
smfco
r
e.error.barcode.locked
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u
88AB
\u9501\u
5B9A
smfco
r
e.manualOut.ok
=
\u
624B
\u
52A8
\u
51FA
\u
5E93
\u6210\u
529F
smfco
r
e.manualOut.notFound
=
\u
4ED3
\u
5E93
\u
4E2D
\u
672A
\u
627E
\u5230\u6599\u
76D8
\u
4FE1
\u
606F
smfco
r
e.order.lineCanotNull
=
\u
7EBF
\u
522B
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfco
r
e.order.cannotUpdateLine
=
\u
5DE5
\u5355\u
5DF2
\u
51FA
\u
5E93
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u
7EBF
\u
522B
smfco
r
e.order.uploadOK
=
\u
5DE5
\u5355\u
4E0A
\u
4F20
\u6210\u
529F
smfco
r
e.order.ameExists
=
\u
5DE5
\u5355\u
540D
\u
79F0[{0}]
\u
5DF2
\u
5B58
\u5728
smfco
r
e.order.hasClose
=
\u
5DE5
\u5355\u
5DF2
\u5173\u
95ED
smfco
r
e.order.supplementOutFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5E93
\u7684\u8865\u6599
smfco
r
e.materialBox.quantityshort=
\u7269\u6599\u6570\u
91CF
\u
4E0D
\u
8DB3
smfco
r
e.materialBox.invalid
=
\u
672A
\u
627E
\u5230\u6599\u
76D2
\u
4FE1
\u
606F{0}
smfco
r
e.materialBox.noReel
=
\u6599\u
76D2
\u
4E2D
\u
672A
\u
627E
\u5230\u
5BF9
\u
5E94
\u7269\u6599
smfco
r
e.materialBox.boxNoReel
=
\u6599\u
76D2
\u
4E2D
\u
65E0
\u7269\u6599
smfco
r
e.materialBox.inPos
=
\u7269\u6599\u
5DF2
\u5728\u
5E93
\u
4F4D{0}
\u
4E2D
smfco
r
e.materialBox.inOtherBox
=
\u7269\u6599\u
5DF2
\u5728\u6599\u
76D2{0}
\u
4E2D
smfcore.materialBox
=
\u6599\u
76D2
\u
64CD
\u
4F5C
smfco
d
e.shelf.nextPos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u7269\u6599
,
\u
8BF7
\u
91CD
\u
65B0
\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
d
e.shelf.nextPos.hasTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
4EFB
\u
52A1,
\u
8BF7
\u
91CD
\u
65B0
\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
d
e.shelf.notFound
=
\u
672A
\u
627E
\u5230\u6599\u
67B6
smfco
d
e.shelf.pos.notInStorage
=
\u6599\u
67B6[{0}]
\u
4E2D
\u
672A
\u
627E
\u5230\u
5E93
\u
4F4D[{1}]
smfco
d
e.shelf.pos.notInGroup
=
\u
7EC4
\u
4E2D
\u
672A
\u
627E
\u5230\u
5E93
\u
4F4D[{0}]
smfco
d
e.shelf.msg.hasReel
=
\u
5E93
\u
4F4D
\u
4E2D[{0}]
\u
5DF2
\u6709\u7269\u6599
smfco
d
e.shelf.msg.tipScanReel
=
\u
5E93
\u
4F4D[{0}]
\u
64CD
\u
4F5C
\u6210\u
529F,
\u
8BF7
\u
626B
\u
63CF
\u8981\u
653E
\u5165\u7684\u7269\u6599
smfco
d
e.shelf.msg.fastop=
\u6761\u7801\u
64CD
\u
4F5C
\u9891\u
7E41,
\u
8BF7
\u
7A0D
\u
540E
\u
518D
\u
8BD5
smfco
d
e.shelf.msg.outConfirm
=
\u
51FA
\u
5E93
\u
5B8C
\u6210
,
\u
5E93
\u
4F4D[{0}]
\u
706D
\u
706F
smfco
d
e.shelf.msg.noTask
=
\u
64CD
\u
4F5C
\u5931\u
8D25,
\u
5DF2
\u5728\u
5E93
\u
4F4D[{0}]
\u
4E2D,
\u
672A
\u
627E
\u5230\u
5BF9
\u
5E94
\u7684\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfco
d
e.shelf.msg.scanPos
=
\u
8BF7
\u5148\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
d
e.shelf.msg.inOk
=
\u
64CD
\u
4F5C
\u6210\u
529F,
\u
8BF7
\u
653E
\u5165\u
5E93
\u
4F4D[{0}]
smfco
d
e.label.noReel
=
\u
672A
\u
627E
\u5230\u
53EF
\u
51FA
\u
5E93
\u7684\u7269\u6599
smfco
r
e.shelf.nextPos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u7269\u6599
,
\u
8BF7
\u
91CD
\u
65B0
\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
r
e.shelf.nextPos.hasTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
4EFB
\u
52A1,
\u
8BF7
\u
91CD
\u
65B0
\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
r
e.shelf.notFound
=
\u
672A
\u
627E
\u5230\u6599\u
67B6
smfco
r
e.shelf.pos.notInStorage
=
\u6599\u
67B6[{0}]
\u
4E2D
\u
672A
\u
627E
\u5230\u
5E93
\u
4F4D[{1}]
smfco
r
e.shelf.pos.notInGroup
=
\u
7EC4
\u
4E2D
\u
672A
\u
627E
\u5230\u
5E93
\u
4F4D[{0}]
smfco
r
e.shelf.msg.hasReel
=
\u
5E93
\u
4F4D
\u
4E2D[{0}]
\u
5DF2
\u6709\u7269\u6599
smfco
r
e.shelf.msg.tipScanReel
=
\u
5E93
\u
4F4D[{0}]
\u
64CD
\u
4F5C
\u6210\u
529F,
\u
8BF7
\u
626B
\u
63CF
\u8981\u
653E
\u5165\u7684\u7269\u6599
smfco
r
e.shelf.msg.fastop=
\u6761\u7801\u
64CD
\u
4F5C
\u9891\u
7E41,
\u
8BF7
\u
7A0D
\u
540E
\u
518D
\u
8BD5
smfco
r
e.shelf.msg.outConfirm
=
\u
51FA
\u
5E93
\u
5B8C
\u6210
,
\u
5E93
\u
4F4D[{0}]
\u
706D
\u
706F
smfco
r
e.shelf.msg.noTask
=
\u
64CD
\u
4F5C
\u5931\u
8D25,
\u
5DF2
\u5728\u
5E93
\u
4F4D[{0}]
\u
4E2D,
\u
672A
\u
627E
\u5230\u
5BF9
\u
5E94
\u7684\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfco
r
e.shelf.msg.scanPos
=
\u
8BF7
\u5148\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
r
e.shelf.msg.inOk
=
\u
64CD
\u
4F5C
\u6210\u
529F,
\u
8BF7
\u
653E
\u5165\u
5E93
\u
4F4D[{0}]
smfco
r
e.label.noReel
=
\u
672A
\u
627E
\u5230\u
53EF
\u
51FA
\u
5E93
\u7684\u7269\u6599
smfcore.msd
=
MSD
\u
7BA1
\u7406
smfcore.msdManage
=
MSD
\u
5E93
\u
5B58
smfcore.msdData
=
MSD
\u
8FFD
\u
6EAF
\u6027
smfcore.msdSetting
=
MSD
\u
8BBE
\u
7F6E
smfcore.translation
=
\u
8D44
\u
6E90
\u
7FFB
\u
8BD1
smfcode.languageCanotNull
=
\u
8BED
\u
8A00
\u
7C7B
\u
578B
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfcode.noLanguageSetAccess
=
\u
6CA1
\u6709\u
7F16
\u
8F91
\u
8BED
\u
8A00
\u7684\u6743\u9650
smfcode.languageCanotRemoveAll
=
\u
4E0D
\u
80FD
\u5220\u9664\u6240\u6709\u
8BED
\u
8A00
\ No newline at end of file
smfcore.languageCanotNull
=
\u
8BED
\u
8A00
\u
7C7B
\u
578B
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfcore.noLanguageSetAccess
=
\u
6CA1
\u6709\u
7F16
\u
8F91
\u
8BED
\u
8A00
\u7684\u6743\u9650
smfcore.languageCanotRemoveAll
=
\u
4E0D
\u
80FD
\u5220\u9664\u6240\u6709\u
8BED
\u
8A00
smfcore.solderPaste
=
\u9521\u
818F
\u
7BA1
\u7406
smfcore.solderPasteKanban
=
\u
8BBE
\u5907\u6982\u
89C8
smfcore.solderPasteManage
=
\u
5E93
\u
5B58
smfcore.solderPasteData
=
\u
8FFD
\u
6EAF
\u6027
smfcore.solderPasteSetting
=
\u
8BBE
\u
7F6E
\ No newline at end of file
src/main/resources/messages_en_US.properties
查看文件 @
ee52703
smfco
d
e.valueCanotNull
=
{0} is empty
smfco
d
e.feleFormatError
=
File format error! Only {0} format is supported
smfco
d
e.valueAlreadyExist
=
{0}[{1}] exist
smfco
d
e.valueNotExist
=
{0}[{1}]does not exist
smfco
d
e.fileToLong
=
File exceeds specified size
smfco
d
e.fileError
=
File parsing failure
smfco
d
e.valueNotFind
=
{0}[{1}] not found
smfco
d
e.humidityValueError
=
Temperature range error
smfco
d
e.humidityShowValueError
=
Temperature display range error
smfco
d
e.temperatureValueError
=
Humidity range error
smfco
d
e.temperatureShowValueError
=
Humidity display range error
smfco
d
e.notActivated
=
Account not activated
smfco
d
e.userInfoError
=
Incomplete user information
Smfcode.
N
oaccess
=
No permission to modify
smfco
d
e.notSelRole
=
Please select a role to modify
smfco
d
e.posIsused
=
SMD BOX [{1}] Position[{0}] has material [{2}], deletion failed
smfco
d
e.thePosIsused
=
Position [{0}] has material [{1}], deletion failed
smfco
d
e.groupWithStorage
=
Group [{0}] is already associated with a device
smfco
d
e.groupWithUser
=
Group [{0}] is already associated with user
smfco
d
e.canotDelSelf
=
Delete user: cannot delete yourself
smfco
d
e.canotDelUser
=
Delete user: cannot delete
smfco
d
e.oldPwdError
=
Modification failure! Wrong password
smfco
d
e.newPwdError
=
New and old password cannot be the same
smfco
d
e.pwdError
=
Mail mod failure! Wrong password
smfco
d
e.hasNoAccess
=
No permission to modify user info
smfco
d
e.noAccessUpdate
=
No permission to delete manu
smfco
d
e.roleCannotDel
=
Role[{0}]has[{1}]user assiciations, deletion failed
smfco
r
e.valueCanotNull
=
{0} is empty
smfco
r
e.feleFormatError
=
File format error! Only {0} format is supported
smfco
r
e.valueAlreadyExist
=
{0}[{1}] exist
smfco
r
e.valueNotExist
=
{0}[{1}]does not exist
smfco
r
e.fileToLong
=
File exceeds specified size
smfco
r
e.fileError
=
File parsing failure
smfco
r
e.valueNotFind
=
{0}[{1}] not found
smfco
r
e.humidityValueError
=
Temperature range error
smfco
r
e.humidityShowValueError
=
Temperature display range error
smfco
r
e.temperatureValueError
=
Humidity range error
smfco
r
e.temperatureShowValueError
=
Humidity display range error
smfco
r
e.notActivated
=
Account not activated
smfco
r
e.userInfoError
=
Incomplete user information
smfcore.n
oaccess
=
No permission to modify
smfco
r
e.notSelRole
=
Please select a role to modify
smfco
r
e.posIsused
=
SMD BOX [{1}] Position[{0}] has material [{2}], deletion failed
smfco
r
e.thePosIsused
=
Position [{0}] has material [{1}], deletion failed
smfco
r
e.groupWithStorage
=
Group [{0}] is already associated with a device
smfco
r
e.groupWithUser
=
Group [{0}] is already associated with user
smfco
r
e.canotDelSelf
=
Delete user: cannot delete yourself
smfco
r
e.canotDelUser
=
Delete user: cannot delete
smfco
r
e.oldPwdError
=
Modification failure! Wrong password
smfco
r
e.newPwdError
=
New and old password cannot be the same
smfco
r
e.pwdError
=
Mail mod failure! Wrong password
smfco
r
e.hasNoAccess
=
No permission to modify user info
smfco
r
e.noAccessUpdate
=
No permission to delete manu
smfco
r
e.roleCannotDel
=
Role[{0}]has[{1}]user assiciations, deletion failed
smfcore.notFindPos
=
Locked position not found
smfcore.error.barcode.empty
=
Barcode empty
smfcore.error.barcode.many
=
Found several barcodes, storage failed
smfcore.error.barcode.expired
=
Reel expired, storage failed
smfcore.allBoxView.noReel
=
No reel in position {0}
smfco
d
e.error.barcode.many
=
Found several barcodes
smfco
d
e.error.barcode.noValidCode
=
Invalid barcode
smfco
r
e.error.barcode.many
=
Found several barcodes
smfco
r
e.error.barcode.noValidCode
=
Invalid barcode
smfcore.error.barcode.noValidCode
=
Invalid barcode {0}
smfco
d
e.error.barcode.executing
=
Barcode [{0}}] in progress
smfco
d
e.error.pos.notExist
=
Position [{0}] does not exist, storage failed
smfco
d
e.error.pos.wrong
=
Position [{0}] and SMD BOX [{1}}] not match, storage failed
smfco
d
e.error.pos.hasReel
=
Position [{0}] is full, storage failed
smfco
d
e.error.pos.sizeNotMatch
=
Reel size[{0}}] not match with position {1} size [{2}], storage failed
smfco
d
e.error.storage.offline
=
SMD BOX[{0}] disconnect
smfco
d
e.error.barcode.invalid
=
Invalid barcode
smfco
d
e.error.barcode.wrongSize
=
Size [{0}] is wrong
smfco
d
e.error.barcode.wrongQty
=
Barcode[{0}] amount<=0 is: {1}
smfco
d
e.error.barcode.taskNotEnd
=
Reel[{0}] operation not complete, storage failed
smfco
d
e.error.columnNotExist
=
Column [{0} does not exist
smfco
r
e.error.barcode.executing
=
Barcode [{0}}] in progress
smfco
r
e.error.pos.notExist
=
Position [{0}] does not exist, storage failed
smfco
r
e.error.pos.wrong
=
Position [{0}] and SMD BOX [{1}}] not match, storage failed
smfco
r
e.error.pos.hasReel
=
Position [{0}] is full, storage failed
smfco
r
e.error.pos.sizeNotMatch
=
Reel size[{0}}] not match with position {1} size [{2}], storage failed
smfco
r
e.error.storage.offline
=
SMD BOX[{0}] disconnect
smfco
r
e.error.barcode.invalid
=
Invalid barcode
smfco
r
e.error.barcode.wrongSize
=
Size [{0}] is wrong
smfco
r
e.error.barcode.wrongQty
=
Barcode[{0}] amount<=0 is: {1}
smfco
r
e.error.barcode.taskNotEnd
=
Reel[{0}] operation not complete, storage failed
smfco
r
e.error.columnNotExist
=
Column [{0} does not exist
smfcore.storage.error.notExist
=
SMD BOX{0} does not exist
smfco
d
e.error.barcode.inQueue
=
QR code[{0}] already in operation list, operation failed
smfco
d
e.error.pos.inQueue
=
Position:[{0}}]already in operation list, operation failed
smfco
d
e.columnNotExist
=
Column [{0} does not exist
smfco
r
e.error.barcode.inQueue
=
QR code[{0}] already in operation list, operation failed
smfco
r
e.error.pos.inQueue
=
Position:[{0}}]already in operation list, operation failed
smfco
r
e.columnNotExist
=
Column [{0} does not exist
smfcore.conotUpdate
=
User name "admin" cannot be modified
smfcore.unfinished
=
Barcode [{0}] task not complete
smfcore.ok
=
OK
...
...
@@ -77,15 +77,15 @@ smfcore.taskLog=Material Log
smfcore.user
=
Users
smfcore.peoples
=
Users
smfcore.role
=
Authority
smfco
d
e.menuNotExist
=
Menu{0} does not exist
smfco
d
e.noValidStorage
=
No available bin found in bin list
smfco
d
e.error.barcode.exist
=
[{0}}] is already in {1}}[{2}}]
smfco
r
e.menuNotExist
=
Menu{0} does not exist
smfco
r
e.noValidStorage
=
No available bin found in bin list
smfco
r
e.error.barcode.exist
=
[{0}}] is already in {1}}[{2}}]
smfcore.barcodeSetting
=
Material ID
smfcore.posNotExist
=
Positions do not exist
smfcore.error
=
Error{0}
smfcore.userManager
=
Users
smfco
d
e.cannotRemove
=
Failed to delete the location, there is material in the location [{0}].
smfco
d
e.nogroupaccess
=
No operation rights for the group [{0}]
smfco
r
e.cannotRemove
=
Failed to delete the location, there is material in the location [{0}].
smfco
r
e.nogroupaccess
=
No operation rights for the group [{0}]
smfcore.outSetting
=
Retrieval Method
smfcore.sysSetting
=
System Setting
smfcore.help
=
Help
...
...
@@ -93,53 +93,58 @@ smfcore.instruction=Instruction manual
smfcore.about
=
About
smfcore.tacticsOuput
=
Retrieval Method
smfcore.labelOuput
=
Grouping
smfco
d
e.order.out.executing
=
Work orders are being executed
smfco
d
e.order.out.notFound
=
Work order not found
smfco
d
e.order.out.maxOrder
=
The maximum number of executable work orders has been reached
smfco
d
e.order.out.noTask
=
Work order No executable tasks
smfco
d
e.cannotUpdateOrderNum
=
The work order has been issued and the quantity cannot be modified
smfco
d
e.order.close.success
=
Work order closed successfully
smfco
d
e.order.close.taskNotEnd
=
Work orders with outstanding tasks
smfco
r
e.order.out.executing
=
Work orders are being executed
smfco
r
e.order.out.notFound
=
Work order not found
smfco
r
e.order.out.maxOrder
=
The maximum number of executable work orders has been reached
smfco
r
e.order.out.noTask
=
Work order No executable tasks
smfco
r
e.cannotUpdateOrderNum
=
The work order has been issued and the quantity cannot be modified
smfco
r
e.order.close.success
=
Work order closed successfully
smfco
r
e.order.close.taskNotEnd
=
Work orders with outstanding tasks
smfcore.manualOut
=
Manual outbound
smfco
d
e.error.barcode.noRules
=
Parsing rules not defined
smfco
d
e.error.barcode.wrongLength
=
The barcode [{0}] is of wrong length
smfco
d
e.error.barcode.noField
=
Bar code parsing failed, {0} field not found
smfco
d
e.error.barcode.pnNotExist
=
Material file {0} does not exist
smfco
d
e.error.barcode.invalid
=
{0} is not a valid barcode
smfco
d
e.error.barcode.locked
=
Library bit [{0}] is locked
smfco
d
e.manualOut.ok
=
Manual exit successful
smfco
d
e.manualOut.notFound
=
No tray information found
smfco
d
e.order.lineCanotNull
=
Line cannot be empty
smfco
d
e.order.cannotUpdateLine
=
Work order has been issued, can not modify the line
smfco
d
e.order.uploadOK
=
Work order uploaded successfully
smfco
d
e.order.ameExists
=
Work order name [{0}] already exists
smfco
d
e.order.hasClose
=
The work order is closed
smfco
d
e.order.supplementOutFail
=
No replenishment material found that can be discharged
smfco
d
e.materialBox.quantityshort
=
Insufficient quantity of materials
smfco
d
e.materialBox.invalid
=
No information found for cartridge {0}
smfco
d
e.materialBox.noReel
=
The corresponding material is not found in the material box
smfco
d
e.materialBox.boxNoReel
=
No material in the cassette
smfco
d
e.materialBox.inPos
=
The material is already in the storage space {0}
smfco
d
e.materialBox.inOtherBox
=
The material is already in the cassette {0}
smfco
r
e.error.barcode.noRules
=
Parsing rules not defined
smfco
r
e.error.barcode.wrongLength
=
The barcode [{0}] is of wrong length
smfco
r
e.error.barcode.noField
=
Bar code parsing failed, {0} field not found
smfco
r
e.error.barcode.pnNotExist
=
Material file {0} does not exist
smfco
r
e.error.barcode.invalid
=
{0} is not a valid barcode
smfco
r
e.error.barcode.locked
=
Library bit [{0}] is locked
smfco
r
e.manualOut.ok
=
Manual exit successful
smfco
r
e.manualOut.notFound
=
No tray information found
smfco
r
e.order.lineCanotNull
=
Line cannot be empty
smfco
r
e.order.cannotUpdateLine
=
Work order has been issued, can not modify the line
smfco
r
e.order.uploadOK
=
Work order uploaded successfully
smfco
r
e.order.ameExists
=
Work order name [{0}] already exists
smfco
r
e.order.hasClose
=
The work order is closed
smfco
r
e.order.supplementOutFail
=
No replenishment material found that can be discharged
smfco
r
e.materialBox.quantityshort
=
Insufficient quantity of materials
smfco
r
e.materialBox.invalid
=
No information found for cartridge {0}
smfco
r
e.materialBox.noReel
=
The corresponding material is not found in the material box
smfco
r
e.materialBox.boxNoReel
=
No material in the cassette
smfco
r
e.materialBox.inPos
=
The material is already in the storage space {0}
smfco
r
e.materialBox.inOtherBox
=
The material is already in the cassette {0}
smfcore.materialBox
=
Container
smfco
d
e.shelf.nextPos.hasReel
=
There is already material in the warehouse [{0}], please scan the warehouse code again.
smfco
d
e.shelf.nextPos.hasTask
=
The library position [{0}] has an existing task, please re-scan the library code
smfco
d
e.shelf.notFound
=
No shelf found
smfco
d
e.shelf.pos.notInStorage
=
No storage space [{1}] was found in the shelf [{0}].
smfco
d
e.shelf.pos.notInGroup
=
Library not found in group[{0}]
smfco
d
e.shelf.msg.hasReel
=
There is already material in [{0}] in the storage space
smfco
d
e.shelf.msg.tipScanReel
=
The operation of [{0}] is successful, please scan the material to be put in.
smfco
d
e.shelf.msg.fastop
=
The barcode operation is frequent, please try again later
smfco
d
e.shelf.msg.outConfirm
=
When the exit of the warehouse is completed, the light of the warehouse position [{0}] goes out
smfco
d
e.shelf.msg.noTask
=
The operation failed, and the corresponding outgoing task was not found in the storage location [{0}]
smfco
d
e.shelf.msg.scanPos
=
Please scan the library code first
smfco
d
e.shelf.msg.inOk
=
The operation is successful, please put it into the storage space[{0}]
smfco
d
e.label.noReel
=
Material not found for release
smfco
r
e.shelf.nextPos.hasReel
=
There is already material in the warehouse [{0}], please scan the warehouse code again.
smfco
r
e.shelf.nextPos.hasTask
=
The library position [{0}] has an existing task, please re-scan the library code
smfco
r
e.shelf.notFound
=
No shelf found
smfco
r
e.shelf.pos.notInStorage
=
No storage space [{1}] was found in the shelf [{0}].
smfco
r
e.shelf.pos.notInGroup
=
Library not found in group[{0}]
smfco
r
e.shelf.msg.hasReel
=
There is already material in [{0}] in the storage space
smfco
r
e.shelf.msg.tipScanReel
=
The operation of [{0}] is successful, please scan the material to be put in.
smfco
r
e.shelf.msg.fastop
=
The barcode operation is frequent, please try again later
smfco
r
e.shelf.msg.outConfirm
=
When the exit of the warehouse is completed, the light of the warehouse position [{0}] goes out
smfco
r
e.shelf.msg.noTask
=
The operation failed, and the corresponding outgoing task was not found in the storage location [{0}]
smfco
r
e.shelf.msg.scanPos
=
Please scan the library code first
smfco
r
e.shelf.msg.inOk
=
The operation is successful, please put it into the storage space[{0}]
smfco
r
e.label.noReel
=
Material not found for release
smfcore.msd
=
MSD Management
smfcore.msdManage
=
MSD Inventory
smfcore.msdData
=
MSD Traceability
smfcore.msdSetting
=
MSD Setting
smfcore.translation
=
Resource Translation
smfcode.languageCanotNull
=
Language type cannot be empty
smfcode.noLanguageSetAccess
=
No permission to edit the language
smfcode.languageCanotRemoveAll
=
Cannot delete all languages
smfcore.languageCanotNull
=
Language type cannot be empty
smfcore.noLanguageSetAccess
=
No permission to edit the language
smfcore.languageCanotRemoveAll
=
Cannot delete all languages
smfcore.solderPaste
=
Solder Paste Management
smfcore.solderPasteKanban
=
Equipment Overview
smfcore.solderPasteManage
=
Inventory
smfcore.solderPasteData
=
Traceability
smfcore.solderPasteSetting
=
Setting
src/main/resources/messages_ja_JP.properties
查看文件 @
ee52703
smfco
d
e.valueCanotNull
=
{0}
\u
306F
\u
7A7A
\u3067\u
306F
\u
306A
\u3044
smfco
d
e.feleFormatError
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
30D5
\u
30A9
\u
30FC
\u
30DE
\u
30C3
\u
30C8
\u
30A8
\u
30E9
\u
30FC
\u3067\u3059
{0}
\u
5F62
\u
5F0F
\u
306E
\u
307F
\u
30B5
\u
30DD
\u
30FC
\u
30C8
\u3057\u3066\u3044\u
307E
\u3059
smfco
d
e.valueAlreadyExist
=
{0}[{1}]
\u
65E2
\u
306B
\u
5B58
\u5728\u3059\u
308B
smfco
d
e.valueNotExist
=
{0}[{1}]
\u
304C
\u
5B58
\u5728\u3057\u
307E
\u
305B
\u3093
smfco
d
e.fileToLong
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
8D85
\u
904E
\u
30B5
\u
30A4
\u
30BA
smfco
d
e.fileError
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
306E
\u
30D1
\u
30FC
\u
30B7
\u
30F3
\u
30B0
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
d
e.valueNotFind
=
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093\u3067\u3057\u
305F{0}[{1}]
smfco
de.hud
idityValueError
=
\u
6E29
\u
5EA6
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfco
de.hud
idityShowValueError
=
\u
6E29
\u
5EA6
\u8868\u
793A
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfco
d
e.temperatureValueError
=
\u
6E7F
\u
5EA6
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfco
d
e.temperatureShowValueError
=
\u
6E7F
\u
5EA6
\u
306E
\u8868\u
793A
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfco
d
e.notActivated
=
\u
30A2
\u
30AB
\u
30A6
\u
30F3
\u
30C8
\u
304C
\u6709\u
52B9
\u
306B
\u
306A
\u3063\u3066\u3044\u
306A
\u3044
smfco
d
e.userInfoError
=
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
60C5
\u5831\u
306E
\u
4E0D
\u5099
smfco
d
e.noaccess
=
\u3053\u
306E
\u
30ED
\u
30FC
\u
30EB
\u
306E
\u
30E1
\u
30CB
\u
30E5
\u
30FC
\u3092\u5909\u
66F4
\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfco
d
e.notSelRole
=
\u5909\u
66F4
\u3059\u
308B
\u
5F79
\u5272\u3092\u9078\u
629E
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfco
d
e.posIsused
=
\u
30D3
\u
30F3[{0}]
\u
306B
\u
306F
\u
30D3
\u
30F3[{1}}][{2}]
\u
306E
\u6750\u6599\u
304C
\u3042\u
308A
\u
307E
\u3059\u
304C
\u3001\u
524A
\u9664\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
d
e.thePosIsused
=
\u
30E9
\u
30A4
\u
30D6
\u
30E9
\u
30EA
\u
306E
\u
30D3
\u
30C3
\u
30C8[{0}]
\u
306B
\u
8CC7
\u6599
[{1}]
\u
304C
\u3042\u
308A
\u3001\u
524A
\u9664\u3067\u
304D
\u
306A
\u3044
smfco
d
e.groupWithStorage
=
\u
30B0
\u
30EB
\u
30FC
\u
30D7[{0}]
\u
304C
\u
30C7
\u
30D0
\u
30A4
\u
30B9
\u
306B
\u
95A2
\u9023\u
4ED8
\u3051\u3089\u
308C
\u3066\u3044\u
308B
smfco
d
e.groupWithUser
=
\u
30B0
\u
30EB
\u
30FC
\u
30D7[{0}]
\u
304C
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
306B
\u
95A2
\u9023\u
4ED8
\u3051\u3089\u
308C
\u3066\u3044\u
308B
smfco
d
e.canotDelSelf
=
\u
81EA
\u5206\u3092\u
524A
\u9664\u3067\u
304D
\u
306A
\u3044
smfco
d
e.canotDelUser
=
\u3053\u
306E
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
306F
\u
524A
\u9664\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
d
e.oldPwdError
=
\u5909\u
66F4
\u5931\u6557\u3001\u
53E4
\u3044\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u
30A8
\u
30E9
\u
30FC
smfco
d
e.newPwdError
=
\u
65B0
\u3057\u3044\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u
306F
\u
53E4
\u3044\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u3068\u
540C
\u3058\u3067\u3042\u3063\u3066\u
306F
\u
306A
\u3089\u
306A
\u3044
smfco
d
e.pwdError
=
\u
30E1
\u
30FC
\u
30EB
\u
30A2
\u
30C9
\u
30EC
\u
30B9
\u
306E
\u5909\u
66F4
\u
306B
\u5931\u6557\u3057\u
305F
\u3001\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u
304C
\u9055\u3046
smfco
d
e.hasNoAccess
=
\u3053\u
306E
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
60C5
\u5831\u3092\u5909\u
66F4
\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfco
d
e.noAccessUpdate
=
\u
30E1
\u
30CB
\u
30E5
\u
30FC
\u3092\u
524A
\u9664\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfco
d
e.roleCannotDel
=
\u
30ED
\u
30FC
\u
30EB[{0}]
\u
306B
\u
306F[{1}]
\u
4EBA
\u
306E
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
304C
\u
95A2
\u9023\u
4ED8
\u3051\u3089\u
308C
\u3066\u
304A
\u
308A
\u3001\u
524A
\u9664\u3059\u
308B
\u3053\u3068\u
306F
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
r
e.valueCanotNull
=
{0}
\u
306F
\u
7A7A
\u3067\u
306F
\u
306A
\u3044
smfco
r
e.feleFormatError
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
30D5
\u
30A9
\u
30FC
\u
30DE
\u
30C3
\u
30C8
\u
30A8
\u
30E9
\u
30FC
\u3067\u3059
{0}
\u
5F62
\u
5F0F
\u
306E
\u
307F
\u
30B5
\u
30DD
\u
30FC
\u
30C8
\u3057\u3066\u3044\u
307E
\u3059
smfco
r
e.valueAlreadyExist
=
{0}[{1}]
\u
65E2
\u
306B
\u
5B58
\u5728\u3059\u
308B
smfco
r
e.valueNotExist
=
{0}[{1}]
\u
304C
\u
5B58
\u5728\u3057\u
307E
\u
305B
\u3093
smfco
r
e.fileToLong
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
8D85
\u
904E
\u
30B5
\u
30A4
\u
30BA
smfco
r
e.fileError
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
306E
\u
30D1
\u
30FC
\u
30B7
\u
30F3
\u
30B0
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
r
e.valueNotFind
=
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093\u3067\u3057\u
305F{0}[{1}]
smfco
re.hum
idityValueError
=
\u
6E29
\u
5EA6
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfco
re.hum
idityShowValueError
=
\u
6E29
\u
5EA6
\u8868\u
793A
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfco
r
e.temperatureValueError
=
\u
6E7F
\u
5EA6
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfco
r
e.temperatureShowValueError
=
\u
6E7F
\u
5EA6
\u
306E
\u8868\u
793A
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfco
r
e.notActivated
=
\u
30A2
\u
30AB
\u
30A6
\u
30F3
\u
30C8
\u
304C
\u6709\u
52B9
\u
306B
\u
306A
\u3063\u3066\u3044\u
306A
\u3044
smfco
r
e.userInfoError
=
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
60C5
\u5831\u
306E
\u
4E0D
\u5099
smfco
r
e.noaccess
=
\u3053\u
306E
\u
30ED
\u
30FC
\u
30EB
\u
306E
\u
30E1
\u
30CB
\u
30E5
\u
30FC
\u3092\u5909\u
66F4
\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfco
r
e.notSelRole
=
\u5909\u
66F4
\u3059\u
308B
\u
5F79
\u5272\u3092\u9078\u
629E
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfco
r
e.posIsused
=
\u
30D3
\u
30F3[{0}]
\u
306B
\u
306F
\u
30D3
\u
30F3[{1}}][{2}]
\u
306E
\u6750\u6599\u
304C
\u3042\u
308A
\u
307E
\u3059\u
304C
\u3001\u
524A
\u9664\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
r
e.thePosIsused
=
\u
30E9
\u
30A4
\u
30D6
\u
30E9
\u
30EA
\u
306E
\u
30D3
\u
30C3
\u
30C8[{0}]
\u
306B
\u
8CC7
\u6599
[{1}]
\u
304C
\u3042\u
308A
\u3001\u
524A
\u9664\u3067\u
304D
\u
306A
\u3044
smfco
r
e.groupWithStorage
=
\u
30B0
\u
30EB
\u
30FC
\u
30D7[{0}]
\u
304C
\u
30C7
\u
30D0
\u
30A4
\u
30B9
\u
306B
\u
95A2
\u9023\u
4ED8
\u3051\u3089\u
308C
\u3066\u3044\u
308B
smfco
r
e.groupWithUser
=
\u
30B0
\u
30EB
\u
30FC
\u
30D7[{0}]
\u
304C
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
306B
\u
95A2
\u9023\u
4ED8
\u3051\u3089\u
308C
\u3066\u3044\u
308B
smfco
r
e.canotDelSelf
=
\u
81EA
\u5206\u3092\u
524A
\u9664\u3067\u
304D
\u
306A
\u3044
smfco
r
e.canotDelUser
=
\u3053\u
306E
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
306F
\u
524A
\u9664\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
r
e.oldPwdError
=
\u5909\u
66F4
\u5931\u6557\u3001\u
53E4
\u3044\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u
30A8
\u
30E9
\u
30FC
smfco
r
e.newPwdError
=
\u
65B0
\u3057\u3044\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u
306F
\u
53E4
\u3044\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u3068\u
540C
\u3058\u3067\u3042\u3063\u3066\u
306F
\u
306A
\u3089\u
306A
\u3044
smfco
r
e.pwdError
=
\u
30E1
\u
30FC
\u
30EB
\u
30A2
\u
30C9
\u
30EC
\u
30B9
\u
306E
\u5909\u
66F4
\u
306B
\u5931\u6557\u3057\u
305F
\u3001\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u
304C
\u9055\u3046
smfco
r
e.hasNoAccess
=
\u3053\u
306E
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
60C5
\u5831\u3092\u5909\u
66F4
\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfco
r
e.noAccessUpdate
=
\u
30E1
\u
30CB
\u
30E5
\u
30FC
\u3092\u
524A
\u9664\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfco
r
e.roleCannotDel
=
\u
30ED
\u
30FC
\u
30EB[{0}]
\u
306B
\u
306F[{1}]
\u
4EBA
\u
306E
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
304C
\u
95A2
\u9023\u
4ED8
\u3051\u3089\u
308C
\u3066\u
304A
\u
308A
\u3001\u
524A
\u9664\u3059\u
308B
\u3053\u3068\u
306F
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfcore.notFindPos
=
\u
30ED
\u
30C3
\u
30AF
\u3055\u
308C
\u
305F
\u
30B9
\u
30C8
\u
30EC
\u
30FC
\u
30B8
\u
30B9
\u
30DA
\u
30FC
\u
30B9
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfcore.error.barcode.empty
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
304C
\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3055\u
308C
\u
306A
\u3044
smfcore.error.barcode.many
=
\u8907\u6570\u
306E
\u6709\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u3057\u
305F
\u
304C
\u3001\u5728\u
5EAB
\u
306F
\u3042\u
308A
\u
307E
\u
305B
\u3093
smfcore.error.barcode.expired
=
\u6750\u6599\u
304C
\u
53E4
\u
304F
\u3066\u5728\u
5EAB
\u
304C
\u
306A
\u3044
smfcore.allBoxView.noReel
=
\u
4FDD
\u
7BA1
\u
4E2D
\u
306E
\u
7D20
\u6750\u
304C
\u
306A
\u3044
{0}
smfco
d
e.error.barcode.many
=
\u8907\u6570\u
306E
\u6709\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
306E
\u
691C
\u
7D22
smfco
d
e.error.barcode.noValidCode
=
\u7121\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
smfco
r
e.error.barcode.many
=
\u8907\u6570\u
306E
\u6709\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
306E
\u
691C
\u
7D22
smfco
r
e.error.barcode.noValidCode
=
\u7121\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
smfcore.error.barcode.noValidCode
=
{0}
\u
306F
\u6709\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u3067\u
306F
\u3042\u
308A
\u
307E
\u
305B
\u3093
smfco
d
e.error.barcode.executing
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9 [{0}}]
\u
30BF
\u
30B9
\u
30AF
\u
304C
\u
5B9F
\u
884C
\u3055\u
308C
\u3066\u3044\u
307E
\u3059
smfco
d
e.error.pos.notExist
=
[{0}]
\u
306E
\u
30DD
\u
30B8
\u
30B7
\u
30E7
\u
30F3
\u
304C
\u
5B58
\u5728\u3057\u
306A
\u3044\u
305F
\u3081\u3001\u5165\u
529B
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
de.error.pos.copse
=
\u
30D9
\u
30A4[{0}]
\u
306F
\u
30D3
\u
30F3[{1}]
\u3068\u
4E00
\u
81F4
\u3057\u
306A
\u3044\u
305F
\u3081\u3001\u
30B9
\u
30C8
\u
30C3
\u
30AF
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
d
e.error.pos.hasReel
=
\u6750\u6599\u
306F
\u
65E2
\u
306B
\u
30D3
\u
30F3[{0}]
\u
306B
\u5165\u3063\u3066\u
304A
\u
308A
\u3001\u5165\u
529B
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
d
e.error.pos.sizeNotMatch
=
\u
30D1
\u
30EC
\u
30C3
\u
30C8[{0}]
\u
306E
\u
30B5
\u
30A4
\u
30BA
\u
304C
\u
53CE
\u
7D0D
\u
30B9
\u
30DA
\u
30FC
\u
30B9[{1}][{2}]
\u
306E
\u
30B5
\u
30A4
\u
30BA
\u
306B
\u
5BFE
\u
5FDC
\u3057\u3066\u
304A
\u3089\u
305A
\u3001\u
53CE
\u
7D0D
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
d
e.error.storage.offline
=
\u
30D3
\u
30F3 [{0}]
\u
30AA
\u
30D5
\u
30E9
\u
30A4
\u
30F3
smfco
d
e.error.barcode.invalid
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
304C
\u7121\u
52B9
\u3067\u3059
smfco
d
e.error.barcode.wrongSize
=
\u
30B5
\u
30A4
\u
30BA[{0}]
\u
304C
\u
4E00
\u
81F4
\u3057\u
306A
\u3044
smfco
d
e.error.barcode.wrongQty
=
<=0
\u
306B
\u
5BFE
\u
5FDC
\u3059\u
308B
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9[{0}]
\u
306E
\u6570\u
306F
\u
FF1A{1}
\u3067\u3059
smfco
d
e.error.barcode.taskNotEnd
=
\u
30D1
\u
30EC
\u
30C3
\u
30C8[{0}]
\u
306B
\u
5BFE
\u3059\u
308B
\u
64CD
\u
4F5C
\u
304C
\u
5B8C
\u
4E86
\u3057\u3066\u
304A
\u3089\u
305A
\u3001\u
53CE
\u
7D0D
\u
64CD
\u
4F5C
\u
304C
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
d
e.error.columnNotExist
=
[{0}
\u5217\u3092\u
542B
\u3080\u
5FC5
\u8981\u
304C
\u3042\u
308A
\u
307E
\u3059
smfco
r
e.error.barcode.executing
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9 [{0}}]
\u
30BF
\u
30B9
\u
30AF
\u
304C
\u
5B9F
\u
884C
\u3055\u
308C
\u3066\u3044\u
307E
\u3059
smfco
r
e.error.pos.notExist
=
[{0}]
\u
306E
\u
30DD
\u
30B8
\u
30B7
\u
30E7
\u
30F3
\u
304C
\u
5B58
\u5728\u3057\u
306A
\u3044\u
305F
\u3081\u3001\u5165\u
529B
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
re.error.pos.wrong
=
\u
30D9
\u
30A4[{0}]
\u
306F
\u
30D3
\u
30F3[{1}]
\u3068\u
4E00
\u
81F4
\u3057\u
306A
\u3044\u
305F
\u3081\u3001\u
30B9
\u
30C8
\u
30C3
\u
30AF
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
r
e.error.pos.hasReel
=
\u6750\u6599\u
306F
\u
65E2
\u
306B
\u
30D3
\u
30F3[{0}]
\u
306B
\u5165\u3063\u3066\u
304A
\u
308A
\u3001\u5165\u
529B
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
r
e.error.pos.sizeNotMatch
=
\u
30D1
\u
30EC
\u
30C3
\u
30C8[{0}]
\u
306E
\u
30B5
\u
30A4
\u
30BA
\u
304C
\u
53CE
\u
7D0D
\u
30B9
\u
30DA
\u
30FC
\u
30B9[{1}][{2}]
\u
306E
\u
30B5
\u
30A4
\u
30BA
\u
306B
\u
5BFE
\u
5FDC
\u3057\u3066\u
304A
\u3089\u
305A
\u3001\u
53CE
\u
7D0D
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
r
e.error.storage.offline
=
\u
30D3
\u
30F3 [{0}]
\u
30AA
\u
30D5
\u
30E9
\u
30A4
\u
30F3
smfco
r
e.error.barcode.invalid
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
304C
\u7121\u
52B9
\u3067\u3059
smfco
r
e.error.barcode.wrongSize
=
\u
30B5
\u
30A4
\u
30BA[{0}]
\u
304C
\u
4E00
\u
81F4
\u3057\u
306A
\u3044
smfco
r
e.error.barcode.wrongQty
=
<=0
\u
306B
\u
5BFE
\u
5FDC
\u3059\u
308B
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9[{0}]
\u
306E
\u6570\u
306F
\u
FF1A{1}
\u3067\u3059
smfco
r
e.error.barcode.taskNotEnd
=
\u
30D1
\u
30EC
\u
30C3
\u
30C8[{0}]
\u
306B
\u
5BFE
\u3059\u
308B
\u
64CD
\u
4F5C
\u
304C
\u
5B8C
\u
4E86
\u3057\u3066\u
304A
\u3089\u
305A
\u3001\u
53CE
\u
7D0D
\u
64CD
\u
4F5C
\u
304C
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfco
r
e.error.columnNotExist
=
[{0}
\u5217\u3092\u
542B
\u3080\u
5FC5
\u8981\u
304C
\u3042\u
308A
\u
307E
\u3059
smfcore.storage.error.notExist
=
\u
30D3
\u
30F3
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093\u3067\u3057\u
305F{0}
smfco
d
e.error.barcode.inQueue
=
QR
\u
30B3
\u
30FC
\u
30C9[{0}]
\u
306F
\u3059\u3067\u
306B
\u
64CD
\u
4F5C
\u
30AD
\u
30E5
\u
30FC
\u
306B
\u5165\u3063\u3066\u
304A
\u
308A
\u3001\u
64CD
\u
4F5C
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
d
e.error.pos.inQueue
=
\u
30DD
\u
30B8
\u
30B7
\u
30E7
\u
30F3 :[{0}}
\u
304C
\u
30AD
\u
30E5
\u
30FC
\u
306B
\u5165\u3063\u3066\u3044\u
307E
\u3059\u
304C
\u3001\u
64CD
\u
4F5C
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
d
e.columnNotExist
=
0}
\u5217\u3092\u
542B
\u3080\u3053\u3068
smfco
r
e.error.barcode.inQueue
=
QR
\u
30B3
\u
30FC
\u
30C9[{0}]
\u
306F
\u3059\u3067\u
306B
\u
64CD
\u
4F5C
\u
30AD
\u
30E5
\u
30FC
\u
306B
\u5165\u3063\u3066\u
304A
\u
308A
\u3001\u
64CD
\u
4F5C
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
r
e.error.pos.inQueue
=
\u
30DD
\u
30B8
\u
30B7
\u
30E7
\u
30F3 :[{0}}
\u
304C
\u
30AD
\u
30E5
\u
30FC
\u
306B
\u5165\u3063\u3066\u3044\u
307E
\u3059\u
304C
\u3001\u
64CD
\u
4F5C
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
r
e.columnNotExist
=
0}
\u5217\u3092\u
542B
\u3080\u3053\u3068
smfcore.conotUpdate
=
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
540Dadmin
\u
306F
\u5909\u
66F4
\u3067\u
304D
\u
307E
\u
305B
\u3093
smfcore.unfinished
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9[{0}]
\u
306E
\u
30BF
\u
30B9
\u
30AF
\u
306F
\u
307E
\u3060\u
7D42
\u
4E86
\u3057\u3066\u3044\u
307E
\u
305B
\u3093
smfcore.ok
=
ok
...
...
@@ -77,15 +77,15 @@ smfcore.taskLog=\u30DE\u30C6\u30EA\u30A2\u30EB\u30ED\u30B0
smfcore.user
=
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
7BA1
\u7406
smfcore.peoples
=
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
7BA1
\u7406
smfcore.role
=
\u
5F79
\u5272\u
7BA1
\u7406
smfco
d
e.menuNotExist
=
\u
30E1
\u
30CB
\u
30E5
\u
30FC{0}
\u
304C
\u
5B58
\u5728\u3057\u
306A
\u3044
smfco
d
e.noValidStorage
=
\u
30D3
\u
30F3
\u
30EA
\u
30B9
\u
30C8
\u
306B
\u5229\u7528\u
53EF
\u
80FD
\u
306A
\u
30D3
\u
30F3
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
d
e.error.barcode.exist
=
[0}}]
\u
306F
\u3059\u3067\u
306B{1}[{2}}
\u
306B
\u5165\u3063\u3066\u3044\u
307E
\u3059\u3002
smfco
r
e.menuNotExist
=
\u
30E1
\u
30CB
\u
30E5
\u
30FC{0}
\u
304C
\u
5B58
\u5728\u3057\u
306A
\u3044
smfco
r
e.noValidStorage
=
\u
30D3
\u
30F3
\u
30EA
\u
30B9
\u
30C8
\u
306B
\u5229\u7528\u
53EF
\u
80FD
\u
306A
\u
30D3
\u
30F3
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
r
e.error.barcode.exist
=
[0}}]
\u
306F
\u3059\u3067\u
306B{1}[{2}}
\u
306B
\u5165\u3063\u3066\u3044\u
307E
\u3059\u3002
smfcore.barcodeSetting
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
8A2D
\u
5B9A
smfcore.posNotExist
=
\u
30E9
\u
30A4
\u
30D6
\u
30E9
\u
30EA
\u
30FC
\u
30B9
\u
30DA
\u
30FC
\u
30B9
\u
304C
\u
5B58
\u5728\u3057\u
306A
\u3044
smfcore.error
=
\u
8AA4
\u
308A{0}
smfcore.userManager
=
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
7BA1
\u7406
smfco
d
e.cannotRemove
=
\u
30B9
\u
30C8
\u
30C3
\u
30AF
\u
30EC
\u
30D9
\u
30EB
\u
306E
\u
524A
\u9664\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
\u3002\u
30B9
\u
30C8
\u
30C3
\u
30AF
\u
30EC
\u
30D9
\u
30EB[{0}]
\u
306B
\u6750\u6599\u
304C
\u3042\u
308A
\u
307E
\u3059\u3002
smfco
d
e.nogroupaccess
=
\u
30B0
\u
30EB
\u
30FC
\u
30D7[{0}]
\u
306E
\u
64CD
\u
4F5C
\u
6A29
\u9650\u
304C
\u3042\u
308A
\u
307E
\u
305B
\u3093\u3002
smfco
r
e.cannotRemove
=
\u
30B9
\u
30C8
\u
30C3
\u
30AF
\u
30EC
\u
30D9
\u
30EB
\u
306E
\u
524A
\u9664\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
\u3002\u
30B9
\u
30C8
\u
30C3
\u
30AF
\u
30EC
\u
30D9
\u
30EB[{0}]
\u
306B
\u6750\u6599\u
304C
\u3042\u
308A
\u
307E
\u3059\u3002
smfco
r
e.nogroupaccess
=
\u
30B0
\u
30EB
\u
30FC
\u
30D7[{0}]
\u
306E
\u
64CD
\u
4F5C
\u
6A29
\u9650\u
304C
\u3042\u
308A
\u
307E
\u
305B
\u3093\u3002
smfcore.outSetting
=
\u
30A2
\u
30A6
\u
30C8
\u
30D0
\u
30A6
\u
30F3
\u
30C9
\u6226\u7565
smfcore.sysSetting
=
\u
30B7
\u
30B9
\u
30C6
\u
30E0
\u
8A2D
\u
5B9A
smfcore.help
=
\u
30D8
\u
30EB
\u
30D7
...
...
@@ -93,53 +93,58 @@ smfcore.instruction=\u53D6\u6271\u8AAC\u660E\u66F8
smfcore.about
=
\u
306B
\u3064\u3044\u3066
smfcore.tacticsOuput
=
\u
30B9
\u
30C8
\u
30E9
\u
30C6
\u
30B8
\u
30FC
\u
306F
\u5728\u
5EAB
\u5207\u
308C
\u3067\u3059
smfcore.labelOuput
=
\u6750\u6599\u
306E
\u
30B0
\u
30EB
\u
30FC
\u
30D7
\u5316
smfco
d
e.order.out.executing
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
304C
\u
5B9F
\u
884C
\u3055\u
308C
\u3066\u3044\u
308B
smfco
d
e.order.out.notFound
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
66F8
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
d
e.order.out.maxOrder
=
\u
5B9F
\u
884C
\u
53EF
\u
80FD
\u
306A
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
306E
\u6700\u5927\u6570\u
306B
\u9054\u3057\u3066\u3044\u
308B
smfco
d
e.order.out.noTask
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
304C
\u
5B9F
\u
884C
\u3067\u
304D
\u
306A
\u3044\u
30BF
\u
30B9
\u
30AF
smfco
d
e.cannotUpdateOrderNum
=
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
304C
\u5728\u
5EAB
\u5207\u
308C
\u3067\u6570\u
91CF
\u
304C
\u5909\u
66F4
\u3067\u
304D
\u
306A
\u3044
smfco
d
e.order.close.success=
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
304C
\u
6B63
\u
5E38
\u
306B
\u
7D42
\u
4E86
\u3057\u
307E
\u3057\u
305F
\u3002
smfco
d
e.order.close.taskNotEnd
=
\u
672A
\u
51E6
\u7406\u
306E
\u
30BF
\u
30B9
\u
30AF
\u
304C
\u3042\u
308B
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
smfco
r
e.order.out.executing
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
304C
\u
5B9F
\u
884C
\u3055\u
308C
\u3066\u3044\u
308B
smfco
r
e.order.out.notFound
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
66F8
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
r
e.order.out.maxOrder
=
\u
5B9F
\u
884C
\u
53EF
\u
80FD
\u
306A
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
306E
\u6700\u5927\u6570\u
306B
\u9054\u3057\u3066\u3044\u
308B
smfco
r
e.order.out.noTask
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
304C
\u
5B9F
\u
884C
\u3067\u
304D
\u
306A
\u3044\u
30BF
\u
30B9
\u
30AF
smfco
r
e.cannotUpdateOrderNum
=
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
304C
\u5728\u
5EAB
\u5207\u
308C
\u3067\u6570\u
91CF
\u
304C
\u5909\u
66F4
\u3067\u
304D
\u
306A
\u3044
smfco
r
e.order.close.success=
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
304C
\u
6B63
\u
5E38
\u
306B
\u
7D42
\u
4E86
\u3057\u
307E
\u3057\u
305F
\u3002
smfco
r
e.order.close.taskNotEnd
=
\u
672A
\u
51E6
\u7406\u
306E
\u
30BF
\u
30B9
\u
30AF
\u
304C
\u3042\u
308B
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
smfcore.manualOut
=
\u
30DE
\u
30CB
\u
30E5
\u
30A2
\u
30EB
\u
30A2
\u
30A6
\u
30C8
\u
30D0
\u
30A6
\u
30F3
\u
30C9
smfco
d
e.error.barcode.noRules
=
\u
69CB
\u6587\u
89E3
\u6790\u
30EB
\u
30FC
\u
30EB
\u
304C
\u
5B9A
\u
7FA9
\u3055\u
308C
\u3066\u3044\u
306A
\u3044
f
smfco
d
e.error.barcode.wrongLength
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9[{0}]
\u
306E
\u9577\u3055\u
304C
\u
4E0D
\u
6B63
\u3067\u3059
smfco
d
e.error.barcode.noField
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
306E
\u
89E3
\u6790\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
\u3002\u
30D5
\u
30A3
\u
30FC
\u
30EB
\u
30C9{0}
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
smfco
d
e.error.barcode.pnNotExist
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB{0}
\u
304C
\u
5B58
\u5728\u3057\u
306A
\u3044
smfco
d
e.error.barcode.invalid
=
{0}
\u
306F
\u6709\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u3067\u
306F
\u3042\u
308A
\u
307E
\u
305B
\u3093
smfco
d
e.error.barcode.locked
=
\u
30E9
\u
30A4
\u
30D6
\u
30E9
\u
30EA
\u
30DD
\u
30B8
\u
30B7
\u
30E7
\u
30F3 [{0}]
\u
304C
\u
30ED
\u
30C3
\u
30AF
\u3055\u
308C
\u3066\u3044\u
308B
smfco
d
e.manualOut.ok
=
\u
624B
\u
52D5
\u
7D42
\u
4E86
\u6210\u
529F
smfco
d
e.manualOut.notFound
=
\u5009\u
5EAB
\u3067\u
30D1
\u
30EC
\u
30C3
\u
30C8
\u
60C5
\u5831\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
d
e.order.lineCanotNull
=
\u
30E9
\u
30A4
\u
30F3
\u
304C
\u
7A7A
\u
304F
\u3053\u3068\u
306F
\u
306A
\u3044
smfco
d
e.order.cannotUpdateLine
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
66F8
\u
304C
\u
767A
\u
884C
\u3055\u
308C
\u3001\u
30E9
\u
30A4
\u
30F3
\u
306E
\u5909\u
66F4
\u
304C
\u3067\u
304D
\u
306A
\u3044\u
72B6
\u
614B
\u
306B
\u
306A
\u3063\u3066\u3044\u
308B
smfco
d
e.order.uploadOK
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
66F8
\u
306E
\u
30A2
\u
30C3
\u
30D7
\u
30ED
\u
30FC
\u
30C9
\u6210\u
529F
smfco
d
e.order.ameExists
=
\u
4F5C
\u
696D
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
540D
\u
300C{0}
\u
300D
\u
306F
\u
65E2
\u
306B
\u
5B58
\u5728\u3057\u3066\u3044\u
307E
\u3059
smfco
d
e.order.hasClose
=
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
306E
\u
7D42
\u
4E86
smfco
d
e.order.supplementOutFail
=
\u6392\u
51FA
\u
53EF
\u
80FD
\u
306A
\u
88DC
\u5145\u
54C1
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
d
e.materialBox.quantityshort
=
\u7269\u6599\u6570\u
91CF
\u
4E0D
\u
8DB3
smfco
d
e.materialBox.invalid
=
\u
96D1
\u
8A8C
\u
306E
\u
60C5
\u5831\u
306F
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093\u3067\u3057\u
305F{0}
smfco
d
e.materialBox.noReel
=
\u
30AB
\u
30BB
\u
30C3
\u
30C8
\u5185\u
306B
\u
8A72
\u
5F53
\u3059\u
308B
\u
7D20
\u6750\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
d
e.materialBox.boxNoReel
=
\u
30AB
\u
30BB
\u
30C3
\u
30C8
\u
306B
\u
7D20
\u6750\u
304C
\u
306A
\u3044
smfco
d
e.materialBox.inPos
=
\u3059\u3067\u
306B
\u5728\u
5EAB
\u
306E
\u3042\u
308B
\u
7D20
\u6750
{0}
smfco
d
e.materialBox.inOtherBox
=
\u
30AB
\u
30BB
\u
30C3
\u
30C8
\u
306B
\u
65E2
\u
306B
\u5165\u3063\u3066\u3044\u
308B
\u
7D20
\u6750
{0}
smfco
r
e.error.barcode.noRules
=
\u
69CB
\u6587\u
89E3
\u6790\u
30EB
\u
30FC
\u
30EB
\u
304C
\u
5B9A
\u
7FA9
\u3055\u
308C
\u3066\u3044\u
306A
\u3044
f
smfco
r
e.error.barcode.wrongLength
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9[{0}]
\u
306E
\u9577\u3055\u
304C
\u
4E0D
\u
6B63
\u3067\u3059
smfco
r
e.error.barcode.noField
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
306E
\u
89E3
\u6790\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
\u3002\u
30D5
\u
30A3
\u
30FC
\u
30EB
\u
30C9{0}
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
smfco
r
e.error.barcode.pnNotExist
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB{0}
\u
304C
\u
5B58
\u5728\u3057\u
306A
\u3044
smfco
r
e.error.barcode.invalid
=
{0}
\u
306F
\u6709\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u3067\u
306F
\u3042\u
308A
\u
307E
\u
305B
\u3093
smfco
r
e.error.barcode.locked
=
\u
30E9
\u
30A4
\u
30D6
\u
30E9
\u
30EA
\u
30DD
\u
30B8
\u
30B7
\u
30E7
\u
30F3 [{0}]
\u
304C
\u
30ED
\u
30C3
\u
30AF
\u3055\u
308C
\u3066\u3044\u
308B
smfco
r
e.manualOut.ok
=
\u
624B
\u
52D5
\u
7D42
\u
4E86
\u6210\u
529F
smfco
r
e.manualOut.notFound
=
\u5009\u
5EAB
\u3067\u
30D1
\u
30EC
\u
30C3
\u
30C8
\u
60C5
\u5831\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
r
e.order.lineCanotNull
=
\u
30E9
\u
30A4
\u
30F3
\u
304C
\u
7A7A
\u
304F
\u3053\u3068\u
306F
\u
306A
\u3044
smfco
r
e.order.cannotUpdateLine
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
66F8
\u
304C
\u
767A
\u
884C
\u3055\u
308C
\u3001\u
30E9
\u
30A4
\u
30F3
\u
306E
\u5909\u
66F4
\u
304C
\u3067\u
304D
\u
306A
\u3044\u
72B6
\u
614B
\u
306B
\u
306A
\u3063\u3066\u3044\u
308B
smfco
r
e.order.uploadOK
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
66F8
\u
306E
\u
30A2
\u
30C3
\u
30D7
\u
30ED
\u
30FC
\u
30C9
\u6210\u
529F
smfco
r
e.order.ameExists
=
\u
4F5C
\u
696D
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
540D
\u
300C{0}
\u
300D
\u
306F
\u
65E2
\u
306B
\u
5B58
\u5728\u3057\u3066\u3044\u
307E
\u3059
smfco
r
e.order.hasClose
=
\u
30EF
\u
30FC
\u
30AF
\u
30AA
\u
30FC
\u
30C0
\u
30FC
\u
306E
\u
7D42
\u
4E86
smfco
r
e.order.supplementOutFail
=
\u6392\u
51FA
\u
53EF
\u
80FD
\u
306A
\u
88DC
\u5145\u
54C1
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
r
e.materialBox.quantityshort
=
\u7269\u6599\u6570\u
91CF
\u
4E0D
\u
8DB3
smfco
r
e.materialBox.invalid
=
\u
96D1
\u
8A8C
\u
306E
\u
60C5
\u5831\u
306F
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093\u3067\u3057\u
305F{0}
smfco
r
e.materialBox.noReel
=
\u
30AB
\u
30BB
\u
30C3
\u
30C8
\u5185\u
306B
\u
8A72
\u
5F53
\u3059\u
308B
\u
7D20
\u6750\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
r
e.materialBox.boxNoReel
=
\u
30AB
\u
30BB
\u
30C3
\u
30C8
\u
306B
\u
7D20
\u6750\u
304C
\u
306A
\u3044
smfco
r
e.materialBox.inPos
=
\u3059\u3067\u
306B
\u5728\u
5EAB
\u
306E
\u3042\u
308B
\u
7D20
\u6750
{0}
smfco
r
e.materialBox.inOtherBox
=
\u
30AB
\u
30BB
\u
30C3
\u
30C8
\u
306B
\u
65E2
\u
306B
\u5165\u3063\u3066\u3044\u
308B
\u
7D20
\u6750
{0}
smfcore.materialBox
=
\u
30AB
\u
30BB
\u
30C3
\u
30C8
\u
64CD
\u
4F5C
smfco
d
e.shelf.nextPos.hasReel
=
\u
30B9
\u
30C8
\u
30A2[{0}]
\u
306B
\u3059\u3067\u
306B
\u
7D20
\u6750\u
304C
\u3042\u
308A
\u
307E
\u3059\u3002\u
30B9
\u
30C8
\u
30A2
\u
30B3
\u
30FC
\u
30C9
\u3092\u
518D
\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3057\u3066\u
304F
\u3060\u3055\u3044\u3002
smfco
d
e.shelf.nextPos.hasTask
=
[0}]
\u
65E2
\u
5B58
\u
306E
\u
30BF
\u
30B9
\u
30AF
\u3001\u
518D
\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfco
d
e.shelf.notFound
=
\u
68DA
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
smfco
d
e.shelf.pos.notInStorage
=
\u
68DA[{0}]
\u
306B
\u
53CE
\u
7D0D
\u
30B9
\u
30DA
\u
30FC
\u
30B9[{1}]
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
smfco
d
e.shelf.pos.notInGroup
=
\u
30ED
\u
30B1
\u
30FC
\u
30B7
\u
30E7
\u
30F3
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
[{0}]
smfco
d
e.shelf.msg.hasReel
=
\u5834\u6240
[{0}]
\u
65E2
\u
5B58
\u
306E
\u
7D20
\u6750
smfco
d
e.shelf.msg.tipScanReel
=
\u
30DD
\u
30B8
\u
30B7
\u
30E7
\u
30F3[{0}]
\u
304C
\u6210\u
529F
\u3057\u
305F
\u
306E
\u3067\u3001\u6295\u5165\u3059\u
308B
\u
7D20
\u6750\u3092\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfco
d
e.shelf.msg.fastop=
\u
983B
\u
7E41
\u
306B
\u
52D5
\u
4F5C
\u3059\u
308B
\u
305F
\u3081\u3001\u
5F8C
\u3067\u3082\u3046\u
4E00
\u
5EA6
\u
304A
\u
8A66
\u3057\u
304F
\u3060\u3055\u3044
smfco
d
e.shelf.msg.outConfirm
=
\u9000\u
51FA
\u
304C
\u
5B8C
\u
4E86
\u3057\u3001
[{0}]
\u3067\u
6D88
\u
706F
\u3057\u3066\u3044\u
307E
\u3059
smfco
d
e.shelf.msg.noTask
=
\u5009\u
5EAB
\u
306E
\u
4F4D
\u
7F6E[{0}]
\u
306B
\u
5BFE
\u
5FDC
\u3059\u
308B
\u9001\u
51FA
\u
30BF
\u
30B9
\u
30AF
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u
304B
\u3063\u
305F
\u
305F
\u3081\u3001\u
64CD
\u
4F5C
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
d
e.shelf.msg.scanPos
=
\u
307E
\u
305A
\u
306F
\u
30E9
\u
30A4
\u
30D6
\u
30E9
\u
30EA
\u
30B3
\u
30FC
\u
30C9
\u3092\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfco
d
e.shelf.msg.inOk
=
\u
64CD
\u
4F5C
\u
306F
\u6210\u
529F
\u3057\u3066\u3044\u
307E
\u3059\u
304C
\u3001\u
53CE
\u
7D0D
\u
30B9
\u
30DA
\u
30FC
\u
30B9
\u
306B
\u
300C{0}
\u
300D
\u3092\u5165\u
308C
\u3066\u
304F
\u3060\u3055\u3044
smfco
d
e.label.noReel
=
\u6750\u6599\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfco
r
e.shelf.nextPos.hasReel
=
\u
30B9
\u
30C8
\u
30A2[{0}]
\u
306B
\u3059\u3067\u
306B
\u
7D20
\u6750\u
304C
\u3042\u
308A
\u
307E
\u3059\u3002\u
30B9
\u
30C8
\u
30A2
\u
30B3
\u
30FC
\u
30C9
\u3092\u
518D
\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3057\u3066\u
304F
\u3060\u3055\u3044\u3002
smfco
r
e.shelf.nextPos.hasTask
=
[0}]
\u
65E2
\u
5B58
\u
306E
\u
30BF
\u
30B9
\u
30AF
\u3001\u
518D
\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfco
r
e.shelf.notFound
=
\u
68DA
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
smfco
r
e.shelf.pos.notInStorage
=
\u
68DA[{0}]
\u
306B
\u
53CE
\u
7D0D
\u
30B9
\u
30DA
\u
30FC
\u
30B9[{1}]
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
smfco
r
e.shelf.pos.notInGroup
=
\u
30ED
\u
30B1
\u
30FC
\u
30B7
\u
30E7
\u
30F3
\u
304C
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093
[{0}]
smfco
r
e.shelf.msg.hasReel
=
\u5834\u6240
[{0}]
\u
65E2
\u
5B58
\u
306E
\u
7D20
\u6750
smfco
r
e.shelf.msg.tipScanReel
=
\u
30DD
\u
30B8
\u
30B7
\u
30E7
\u
30F3[{0}]
\u
304C
\u6210\u
529F
\u3057\u
305F
\u
306E
\u3067\u3001\u6295\u5165\u3059\u
308B
\u
7D20
\u6750\u3092\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfco
r
e.shelf.msg.fastop=
\u
983B
\u
7E41
\u
306B
\u
52D5
\u
4F5C
\u3059\u
308B
\u
305F
\u3081\u3001\u
5F8C
\u3067\u3082\u3046\u
4E00
\u
5EA6
\u
304A
\u
8A66
\u3057\u
304F
\u3060\u3055\u3044
smfco
r
e.shelf.msg.outConfirm
=
\u9000\u
51FA
\u
304C
\u
5B8C
\u
4E86
\u3057\u3001
[{0}]
\u3067\u
6D88
\u
706F
\u3057\u3066\u3044\u
307E
\u3059
smfco
r
e.shelf.msg.noTask
=
\u5009\u
5EAB
\u
306E
\u
4F4D
\u
7F6E[{0}]
\u
306B
\u
5BFE
\u
5FDC
\u3059\u
308B
\u9001\u
51FA
\u
30BF
\u
30B9
\u
30AF
\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u
304B
\u3063\u
305F
\u
305F
\u3081\u3001\u
64CD
\u
4F5C
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F
smfco
r
e.shelf.msg.scanPos
=
\u
307E
\u
305A
\u
306F
\u
30E9
\u
30A4
\u
30D6
\u
30E9
\u
30EA
\u
30B3
\u
30FC
\u
30C9
\u3092\u
30B9
\u
30AD
\u
30E3
\u
30F3
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfco
r
e.shelf.msg.inOk
=
\u
64CD
\u
4F5C
\u
306F
\u6210\u
529F
\u3057\u3066\u3044\u
307E
\u3059\u
304C
\u3001\u
53CE
\u
7D0D
\u
30B9
\u
30DA
\u
30FC
\u
30B9
\u
306B
\u
300C{0}
\u
300D
\u3092\u5165\u
308C
\u3066\u
304F
\u3060\u3055\u3044
smfco
r
e.label.noReel
=
\u6750\u6599\u
304C
\u
898B
\u3064\u
304B
\u3089\u
306A
\u3044
smfcore.msd
=
MSD
\u
7BA1
\u7406
smfcore.msdManage
=
MSD
\u
5E93
\u
5B58
smfcore.msdData
=
MSD
\u
8FFD
\u
6EAF
\u6027
smfcore.msdSetting
=
MSD
\u
8BBE
\u
7F6E
smfcore.translation
=
\u
30EA
\u
30BD
\u
30FC
\u
30B9
\u
306E
\u
7FFB
\u
8A33
smfcode.languageCanotNull
=
\u
8A00
\u
8A9E
\u
30BF
\u
30A4
\u
30D7
\u
306F
\u
7A7A
\u3067\u
306F
\u3042\u
308A
\u
307E
\u
305B
\u3093
smfcode.noLanguageSetAccess
=
\u
8A00
\u
8A9E
\u3092\u
7DE8
\u
96C6
\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfcode.languageCanotRemoveAll
=
\u3059\u3079\u3066\u
306E
\u
8A00
\u
8A9E
\u3092\u
524A
\u9664\u3067\u
304D
\u
306A
\u3044
\ No newline at end of file
smfcore.languageCanotNull
=
\u
8A00
\u
8A9E
\u
30BF
\u
30A4
\u
30D7
\u
306F
\u
7A7A
\u3067\u
306F
\u3042\u
308A
\u
307E
\u
305B
\u3093
smfcore.noLanguageSetAccess
=
\u
8A00
\u
8A9E
\u3092\u
7DE8
\u
96C6
\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfcore.languageCanotRemoveAll
=
\u3059\u3079\u3066\u
306E
\u
8A00
\u
8A9E
\u3092\u
524A
\u9664\u3067\u
304D
\u
306A
\u3044
smfcore.solderPaste
=
\u9521\u
818F
\u
7BA1
\u7406
smfcore.solderPasteKanban
=
\u
8BBE
\u5907\u6982\u
89C8
smfcore.solderPasteManage
=
\u
5E93
\u
5B58
smfcore.solderPasteData
=
\u
8FFD
\u
6EAF
\u6027
smfcore.solderPasteSetting
=
\u
8BBE
\u
7F6E
\ No newline at end of file
src/main/resources/messages_zh_CN.properties
查看文件 @
ee52703
smfco
d
e.valueCanotNull
=
{0}
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfco
d
e.feleFormatError
=
\u6587\u
4EF6
\u
683C
\u
5F0F
\u9519\u
8BEF
\u
FF01,
\u
4EC5
\u
652F
\u6301
{0}
\u
683C
\u
5F0F
smfco
d
e.valueAlreadyExist
=
{0}[{1}]
\u
5DF2
\u
5B58
\u5728
smfco
d
e.valueNotExist
=
{0}[{1}]
\u
4E0D
\u
5B58
\u5728
smfco
d
e.fileToLong
=
\u6587\u
4EF6
\u
8D85
\u
51FA
\u
89C4
\u
5B9A
\u5927\u
5C0F
smfco
d
e.fileError
=
\u6587\u
4EF6
\u
89E3
\u6790\u5931\u
8D25
smfco
d
e.valueNotFind
=
\u
672A
\u
627E
\u5230
{0}[{1}]
smfco
d
e.humidityValueError
=
\u
6E29
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
d
e.humidityShowValueError
=
\u
6E29
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
d
e.temperatureValueError
=
\u
6E7F
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
d
e.temperatureShowValueError
=
\u
6E7F
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
d
e.notActivated
=
\u
8D26
\u
53F7
\u
672A
\u
6FC0
\u
6D3B
smfco
d
e.userInfoError
=
\u7528\u6237\u
4FE1
\u
606F
\u
4E0D
\u
5B8C
\u6574
smfco
d
e.noaccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u
89D2
\u8272\u7684\u
83DC
\u5355
smfco
d
e.notSelRole
=
\u
8BF7
\u8981\u
4FEE
\u6539\u7684\u9009\u
62E9
\u
89D2
\u8272
smfco
d
e.posIsused
=
\u6599\u
4ED3[{0}]
\u7684\u
5E93
\u
4F4D[{1}}]
\u6709\u6599
[{2}],
\u5220\u9664\u5931\u
8D25
smfco
d
e.thePosIsused
=
\u
5E93
\u
4F4D[{0}]
\u6709\u6599
[{1}],
\u
4E0D
\u
80FD
\u5220\u9664
smfco
d
e.groupWithStorage
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u
8BBE
\u5907\u5173\u8054
smfco
d
e.groupWithUser
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u7528\u6237\u5173\u8054
smfco
d
e.canotDelSelf
=
\u5220\u9664\u7528\u6237\u
FF1A
\u
4E0D
\u
80FD
\u5220\u9664\u
81EA
\u
5DF1
smfco
d
e.canotDelUser
=
\u5220\u9664\u7528\u6237\u
FF1A
\u
6B64
\u7528\u6237\u
4E0D
\u
80FD
\u5220\u9664
smfco
d
e.oldPwdError
=
\u
4FEE
\u6539\u5931\u
8D25
\u
FF0C
\u
65E7
\u
5BC6
\u7801\u9519\u
8BEF
smfco
d
e.newPwdError
=
\u
65B0
\u
5BC6
\u7801\u
4E0D
\u
80FD
\u
4E0E
\u
65E7
\u
5BC6
\u7801\u
76F8
\u
540C
smfco
d
e.pwdError
=
\u
4FEE
\u6539\u
90AE
\u
7BB1
\u5931\u
8D25
\u
FF0C
\u
5BC6
\u7801\u9519\u
8BEF
smfco
d
e.hasNoAccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u7528\u6237\u
4FE1
\u
606F
smfco
d
e.noAccessUpdate
=
\u
6CA1
\u6709\u5220\u9664\u
83DC
\u5355\u7684\u6743\u9650
smfco
d
e.roleCannotDel
=
\u
89D2
\u8272
[{0}]
\u6709
[{1}]
\u
4E2A
\u7528\u6237\u5173\u8054\u6539\u
89D2
\u8272
,
\u
4E0D
\u
80FD
\u5220\u9664
smfco
r
e.valueCanotNull
=
{0}
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfco
r
e.feleFormatError
=
\u6587\u
4EF6
\u
683C
\u
5F0F
\u9519\u
8BEF
\u
FF01,
\u
4EC5
\u
652F
\u6301
{0}
\u
683C
\u
5F0F
smfco
r
e.valueAlreadyExist
=
{0}[{1}]
\u
5DF2
\u
5B58
\u5728
smfco
r
e.valueNotExist
=
{0}[{1}]
\u
4E0D
\u
5B58
\u5728
smfco
r
e.fileToLong
=
\u6587\u
4EF6
\u
8D85
\u
51FA
\u
89C4
\u
5B9A
\u5927\u
5C0F
smfco
r
e.fileError
=
\u6587\u
4EF6
\u
89E3
\u6790\u5931\u
8D25
smfco
r
e.valueNotFind
=
\u
672A
\u
627E
\u5230
{0}[{1}]
smfco
r
e.humidityValueError
=
\u
6E29
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
r
e.humidityShowValueError
=
\u
6E29
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
r
e.temperatureValueError
=
\u
6E7F
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
r
e.temperatureShowValueError
=
\u
6E7F
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfco
r
e.notActivated
=
\u
8D26
\u
53F7
\u
672A
\u
6FC0
\u
6D3B
smfco
r
e.userInfoError
=
\u7528\u6237\u
4FE1
\u
606F
\u
4E0D
\u
5B8C
\u6574
smfco
r
e.noaccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u
89D2
\u8272\u7684\u
83DC
\u5355
smfco
r
e.notSelRole
=
\u
8BF7
\u8981\u
4FEE
\u6539\u7684\u9009\u
62E9
\u
89D2
\u8272
smfco
r
e.posIsused
=
\u6599\u
4ED3[{0}]
\u7684\u
5E93
\u
4F4D[{1}}]
\u6709\u6599
[{2}],
\u5220\u9664\u5931\u
8D25
smfco
r
e.thePosIsused
=
\u
5E93
\u
4F4D[{0}]
\u6709\u6599
[{1}],
\u
4E0D
\u
80FD
\u5220\u9664
smfco
r
e.groupWithStorage
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u
8BBE
\u5907\u5173\u8054
smfco
r
e.groupWithUser
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u7528\u6237\u5173\u8054
smfco
r
e.canotDelSelf
=
\u5220\u9664\u7528\u6237\u
FF1A
\u
4E0D
\u
80FD
\u5220\u9664\u
81EA
\u
5DF1
smfco
r
e.canotDelUser
=
\u5220\u9664\u7528\u6237\u
FF1A
\u
6B64
\u7528\u6237\u
4E0D
\u
80FD
\u5220\u9664
smfco
r
e.oldPwdError
=
\u
4FEE
\u6539\u5931\u
8D25
\u
FF0C
\u
65E7
\u
5BC6
\u7801\u9519\u
8BEF
smfco
r
e.newPwdError
=
\u
65B0
\u
5BC6
\u7801\u
4E0D
\u
80FD
\u
4E0E
\u
65E7
\u
5BC6
\u7801\u
76F8
\u
540C
smfco
r
e.pwdError
=
\u
4FEE
\u6539\u
90AE
\u
7BB1
\u5931\u
8D25
\u
FF0C
\u
5BC6
\u7801\u9519\u
8BEF
smfco
r
e.hasNoAccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u7528\u6237\u
4FE1
\u
606F
smfco
r
e.noAccessUpdate
=
\u
6CA1
\u6709\u5220\u9664\u
83DC
\u5355\u7684\u6743\u9650
smfco
r
e.roleCannotDel
=
\u
89D2
\u8272
[{0}]
\u6709
[{1}]
\u
4E2A
\u7528\u6237\u5173\u8054\u6539\u
89D2
\u8272
,
\u
4E0D
\u
80FD
\u5220\u9664
smfcore.notFindPos
=
\u
672A
\u
627E
\u5230\u9501\u
5B9A
\u
5E93
\u
4F4D
smfcore.error.barcode.empty
=
\u
672A
\u
626B
\u5230\u6761\u7801
smfcore.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
4E2A
\u6709\u6548\u6761\u7801
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfcore.error.barcode.expired
=
\u7269\u6599\u
5DF2
\u
8FC7
\u
671F,
\u
65E0
\u
6CD5
\u5165\u
5E93.
smfcore.allBoxView.noReel
=
\u
5E93
\u
4F4D{0}
\u
4E2D
\u
65E0
\u7269\u6599
smfco
d
e.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
4E2A
\u6709\u6548\u7684\u6761\u7801
smfco
d
e.error.barcode.noValidCode
=
\u
65E0
\u6548\u7684\u6761\u7801
smfco
r
e.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
4E2A
\u6709\u6548\u7684\u6761\u7801
smfco
r
e.error.barcode.noValidCode
=
\u
65E0
\u6548\u7684\u6761\u7801
smfcore.error.barcode.noValidCode
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
smfco
d
e.error.barcode.executing
=
\u6761\u7801
[{0}}]
\u
4EFB
\u
52A1
\u
6B63
\u5728\u6267\u
884C
smfco
d
e.error.pos.notExist
=
\u
5E93
\u
4F4D[{0}]
\u
4E0D
\u
5B58
\u5728
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
d
e.error.pos.wrong
=
\u
5E93
\u
4F4D[{0}]
\u
4E0E
\u6599\u
4ED3[{1}}]
\u
4E0D
\u5339\u
914D,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
d
e.error.pos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
d
e.error.pos.sizeNotMatch
=
\u6599\u
76D8
\u
5C3A
\u
5BF8[{0}}]
\u
4E0E
\u
5E93
\u
4F4D{1}
\u
5C3A
\u
5BF8[{2}]
\u
4E0D
\u
7B26,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
d
e.error.storage.offline
=
\u6599\u
4ED3[{0}]
\u
79BB
\u
7EBF
smfco
d
e.error.barcode.invalid
=
\u6761\u7801\u
65E0
\u6548
smfco
d
e.error.barcode.wrongSize
=
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
smfco
d
e.error.barcode.wrongQty
=
\u6761\u7801
[{0}]
\u
5BF9
\u
5E94
\u7684\u6570\u
91CF<=0
\u
4E3A: {1}
smfco
d
e.error.barcode.taskNotEnd
=
\u6599\u
76D8[{0}]
\u7684\u
64CD
\u
4F5C
\u
672A
\u
5B8C
\u6210
,
\u
65E0
\u
6CD5
\u6267\u
884C
\u5165\u
5E93
\u
64CD
\u
4F5C
smfco
d
e.error.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfco
r
e.error.barcode.executing
=
\u6761\u7801
[{0}}]
\u
4EFB
\u
52A1
\u
6B63
\u5728\u6267\u
884C
smfco
r
e.error.pos.notExist
=
\u
5E93
\u
4F4D[{0}]
\u
4E0D
\u
5B58
\u5728
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
r
e.error.pos.wrong
=
\u
5E93
\u
4F4D[{0}]
\u
4E0E
\u6599\u
4ED3[{1}}]
\u
4E0D
\u5339\u
914D,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
r
e.error.pos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
r
e.error.pos.sizeNotMatch
=
\u6599\u
76D8
\u
5C3A
\u
5BF8[{0}}]
\u
4E0E
\u
5E93
\u
4F4D{1}
\u
5C3A
\u
5BF8[{2}]
\u
4E0D
\u
7B26,
\u
65E0
\u
6CD5
\u5165\u
5E93
smfco
r
e.error.storage.offline
=
\u6599\u
4ED3[{0}]
\u
79BB
\u
7EBF
smfco
r
e.error.barcode.invalid
=
\u6761\u7801\u
65E0
\u6548
smfco
r
e.error.barcode.wrongSize
=
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
smfco
r
e.error.barcode.wrongQty
=
\u6761\u7801
[{0}]
\u
5BF9
\u
5E94
\u7684\u6570\u
91CF<=0
\u
4E3A: {1}
smfco
r
e.error.barcode.taskNotEnd
=
\u6599\u
76D8[{0}]
\u7684\u
64CD
\u
4F5C
\u
672A
\u
5B8C
\u6210
,
\u
65E0
\u
6CD5
\u6267\u
884C
\u5165\u
5E93
\u
64CD
\u
4F5C
smfco
r
e.error.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfcore.storage.error.notExist
=
\u
672A
\u
627E
\u5230\u6599\u
4ED3{0}
smfco
d
e.error.barcode.inQueue
=
\u
4E8C
\u
7EF4
\u7801
[{0}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D
\u
FF0C
\u
64CD
\u
4F5C
\u5931\u
8D25
smfco
d
e.error.pos.inQueue
=
\u
4F4D
\u
7F6E:[{0}}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D,
\u
64CD
\u
4F5C
\u5931\u
8D25
smfco
d
e.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfco
r
e.error.barcode.inQueue
=
\u
4E8C
\u
7EF4
\u7801
[{0}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D
\u
FF0C
\u
64CD
\u
4F5C
\u5931\u
8D25
smfco
r
e.error.pos.inQueue
=
\u
4F4D
\u
7F6E:[{0}}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
961F
\u5217\u
4E2D,
\u
64CD
\u
4F5C
\u5931\u
8D25
smfco
r
e.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfcore.conotUpdate
=
\u7528\u6237\u
540Dadmin
\u
4E0D
\u
80FD
\u
4FEE
\u6539
smfcore.unfinished
=
\u6761\u7801
[{0}]
\u7684\u
4EFB
\u
52A1
\u
8FD8
\u
672A
\u
7ED3
\u
675F
smfcore.ok
=
ok
...
...
@@ -77,15 +77,15 @@ smfcore.taskLog=\u7269\u6599\u65E5\u5FD7
smfcore.user
=
\u7528\u6237\u
7BA1
\u7406
smfcore.peoples
=
\u7528\u6237\u
7BA1
\u7406
smfcore.role
=
\u
89D2
\u8272\u
7BA1
\u7406
smfco
d
e.menuNotExist
=
\u
83DC
\u5355
{0}
\u
4E0D
\u
5B58
\u5728
smfco
d
e.noValidStorage
=
\u6599\u
4ED3
\u5217\u8868\u
4E2D
\u
672A
\u
627E
\u5230\u
53EF
\u7528\u7684\u6599\u
4ED3
smfco
d
e.error.barcode.exist
=
[{0}}]
\u
5DF2
\u5728
{1}}[{2}}]
\u
4E2D
smfco
r
e.menuNotExist
=
\u
83DC
\u5355
{0}
\u
4E0D
\u
5B58
\u5728
smfco
r
e.noValidStorage
=
\u6599\u
4ED3
\u5217\u8868\u
4E2D
\u
672A
\u
627E
\u5230\u
53EF
\u7528\u7684\u6599\u
4ED3
smfco
r
e.error.barcode.exist
=
[{0}}]
\u
5DF2
\u5728
{1}}[{2}}]
\u
4E2D
smfcore.barcodeSetting
=
\u6761\u7801\u
8BBE
\u
7F6E
smfcore.posNotExist
=
\u
4ED3
\u
4F4D
\u
4E0D
\u
5B58
\u5728
smfcore.error
=
\u
51FA
\u9519
{0}
smfcore.userManager
=
\u7528\u6237\u
7BA1
\u7406
smfco
d
e.cannotRemove
=
\u5220\u9664\u
5E93
\u
4F4D
\u5931\u
8D25
\u
FF0C
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u6709\u6599
smfco
d
e.nogroupaccess
=
\u
6CA1
\u6709\u
7EC4[{0}]
\u7684\u
64CD
\u
4F5C
\u6743\u9650
smfco
r
e.cannotRemove
=
\u5220\u9664\u
5E93
\u
4F4D
\u5931\u
8D25
\u
FF0C
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u6709\u6599
smfco
r
e.nogroupaccess
=
\u
6CA1
\u6709\u
7EC4[{0}]
\u7684\u
64CD
\u
4F5C
\u6743\u9650
smfcore.outSetting
=
\u
51FA
\u
5E93
\u
7B56
\u7565
smfcore.sysSetting
=
\u
7CFB
\u
7EDF
\u
8BBE
\u
7F6E
smfcore.help
=
\u
5E2E
\u
52A9
...
...
@@ -93,53 +93,58 @@ smfcore.instruction=\u8BF4\u660E\u4E66
smfcore.about
=
\u5173\u
4E8E
smfcore.tacticsOuput
=
\u
7B56
\u7565\u
51FA
\u
5E93
smfcore.labelOuput
=
\u7269\u6599\u5206\u
7EC4
smfco
d
e.order.out.executing
=
\u
5DE5
\u5355\u
6B63
\u5728\u6267\u
884C
smfco
d
e.order.out.notFound
=
\u
5DE5
\u5355\u
672A
\u
627E
\u5230
smfco
d
e.order.out.maxOrder
=
\u
5DF2
\u
8FBE
\u6700\u5927\u
53EF
\u6267\u
884C
\u
5DE5
\u5355\u6570
smfco
d
e.order.out.noTask
=
\u
5DE5
\u5355\u
65E0
\u
53EF
\u6267\u
884C
\u7684\u
4EFB
\u
52A1
smfco
d
e.cannotUpdateOrderNum
=
\u
5DE5
\u5355\u
5DF2
\u
51FA
\u
5E93
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u6570\u
91CF
smfco
d
e.order.close.success
=
\u
5DE5
\u5355\u5173\u
95ED
\u6210\u
529F
smfco
d
e.order.close.taskNotEnd
=
\u
5DE5
\u5355\u
8FD8
\u6709\u
672A
\u
5B8C
\u6210\u7684\u
4EFB
\u
52A1
smfco
r
e.order.out.executing
=
\u
5DE5
\u5355\u
6B63
\u5728\u6267\u
884C
smfco
r
e.order.out.notFound
=
\u
5DE5
\u5355\u
672A
\u
627E
\u5230
smfco
r
e.order.out.maxOrder
=
\u
5DF2
\u
8FBE
\u6700\u5927\u
53EF
\u6267\u
884C
\u
5DE5
\u5355\u6570
smfco
r
e.order.out.noTask
=
\u
5DE5
\u5355\u
65E0
\u
53EF
\u6267\u
884C
\u7684\u
4EFB
\u
52A1
smfco
r
e.cannotUpdateOrderNum
=
\u
5DE5
\u5355\u
5DF2
\u
51FA
\u
5E93
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u6570\u
91CF
smfco
r
e.order.close.success
=
\u
5DE5
\u5355\u5173\u
95ED
\u6210\u
529F
smfco
r
e.order.close.taskNotEnd
=
\u
5DE5
\u5355\u
8FD8
\u6709\u
672A
\u
5B8C
\u6210\u7684\u
4EFB
\u
52A1
smfcore.manualOut
=
\u
624B
\u
52A8
\u
51FA
\u
5E93
smfco
d
e.error.barcode.noRules
=
\u
89E3
\u6790\u
89C4
\u5219\u
672A
\u
5B9A
\u
4E49
smfco
d
e.error.barcode.wrongLength
=
\u6761\u7801
[{0}]
\u
957F
\u
5EA6
\u9519\u
8BEF
smfco
d
e.error.barcode.noField
=
\u6761\u7801\u
89E3
\u6790\u5931\u
8D25,
\u
672A
\u
627E
\u5230
{0}
\u
5B57
\u
6BB5
smfco
d
e.error.barcode.pnNotExist
=
x
\u6863\u6848
{0}
\u
4E0D
\u
5B58
\u5728
smfco
d
e.error.barcode.invalid
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
smfco
d
e.error.barcode.locked
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u
88AB
\u9501\u
5B9A
smfco
d
e.manualOut.ok
=
\u
624B
\u
52A8
\u
51FA
\u
5E93
\u6210\u
529F
smfco
d
e.manualOut.notFound
=
\u
4ED3
\u
5E93
\u
4E2D
\u
672A
\u
627E
\u5230\u6599\u
76D8
\u
4FE1
\u
606F
smfco
d
e.order.lineCanotNull
=
\u
7EBF
\u
522B
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfco
d
e.order.cannotUpdateLine
=
\u
5DE5
\u5355\u
5DF2
\u
51FA
\u
5E93
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u
7EBF
\u
522B
smfco
d
e.order.uploadOK
=
\u
5DE5
\u5355\u
4E0A
\u
4F20
\u6210\u
529F
smfco
d
e.order.ameExists
=
\u
5DE5
\u5355\u
540D
\u
79F0[{0}]
\u
5DF2
\u
5B58
\u5728
smfco
d
e.order.hasClose
=
\u
5DE5
\u5355\u
5DF2
\u5173\u
95ED
smfco
d
e.order.supplementOutFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5E93
\u7684\u8865\u6599
smfco
d
e.materialBox.quantityshort
=
\u7269\u6599\u6570\u
91CF
\u
4E0D
\u
8DB3
smfco
d
e.materialBox.invalid
=
\u
672A
\u
627E
\u5230\u6599\u
76D2
\u
4FE1
\u
606F{0}
smfco
d
e.materialBox.noReel
=
\u6599\u
76D2
\u
4E2D
\u
672A
\u
627E
\u5230\u
5BF9
\u
5E94
\u7269\u6599
smfco
d
e.materialBox.boxNoReel
=
\u6599\u
76D2
\u
4E2D
\u
65E0
\u7269\u6599
smfco
d
e.materialBox.inPos
=
\u7269\u6599\u
5DF2
\u5728\u
5E93
\u
4F4D{0}
\u
4E2D
smfco
d
e.materialBox.inOtherBox
=
\u7269\u6599\u
5DF2
\u5728\u6599\u
76D2{0}
\u
4E2D
smfco
r
e.error.barcode.noRules
=
\u
89E3
\u6790\u
89C4
\u5219\u
672A
\u
5B9A
\u
4E49
smfco
r
e.error.barcode.wrongLength
=
\u6761\u7801
[{0}]
\u
957F
\u
5EA6
\u9519\u
8BEF
smfco
r
e.error.barcode.noField
=
\u6761\u7801\u
89E3
\u6790\u5931\u
8D25,
\u
672A
\u
627E
\u5230
{0}
\u
5B57
\u
6BB5
smfco
r
e.error.barcode.pnNotExist
=
x
\u6863\u6848
{0}
\u
4E0D
\u
5B58
\u5728
smfco
r
e.error.barcode.invalid
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
smfco
r
e.error.barcode.locked
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u
88AB
\u9501\u
5B9A
smfco
r
e.manualOut.ok
=
\u
624B
\u
52A8
\u
51FA
\u
5E93
\u6210\u
529F
smfco
r
e.manualOut.notFound
=
\u
4ED3
\u
5E93
\u
4E2D
\u
672A
\u
627E
\u5230\u6599\u
76D8
\u
4FE1
\u
606F
smfco
r
e.order.lineCanotNull
=
\u
7EBF
\u
522B
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfco
r
e.order.cannotUpdateLine
=
\u
5DE5
\u5355\u
5DF2
\u
51FA
\u
5E93
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u
7EBF
\u
522B
smfco
r
e.order.uploadOK
=
\u
5DE5
\u5355\u
4E0A
\u
4F20
\u6210\u
529F
smfco
r
e.order.ameExists
=
\u
5DE5
\u5355\u
540D
\u
79F0[{0}]
\u
5DF2
\u
5B58
\u5728
smfco
r
e.order.hasClose
=
\u
5DE5
\u5355\u
5DF2
\u5173\u
95ED
smfco
r
e.order.supplementOutFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5E93
\u7684\u8865\u6599
smfco
r
e.materialBox.quantityshort
=
\u7269\u6599\u6570\u
91CF
\u
4E0D
\u
8DB3
smfco
r
e.materialBox.invalid
=
\u
672A
\u
627E
\u5230\u6599\u
76D2
\u
4FE1
\u
606F{0}
smfco
r
e.materialBox.noReel
=
\u6599\u
76D2
\u
4E2D
\u
672A
\u
627E
\u5230\u
5BF9
\u
5E94
\u7269\u6599
smfco
r
e.materialBox.boxNoReel
=
\u6599\u
76D2
\u
4E2D
\u
65E0
\u7269\u6599
smfco
r
e.materialBox.inPos
=
\u7269\u6599\u
5DF2
\u5728\u
5E93
\u
4F4D{0}
\u
4E2D
smfco
r
e.materialBox.inOtherBox
=
\u7269\u6599\u
5DF2
\u5728\u6599\u
76D2{0}
\u
4E2D
smfcore.materialBox
=
\u6599\u
76D2
\u
64CD
\u
4F5C
smfco
d
e.shelf.nextPos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u7269\u6599
,
\u
8BF7
\u
91CD
\u
65B0
\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
d
e.shelf.nextPos.hasTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
4EFB
\u
52A1,
\u
8BF7
\u
91CD
\u
65B0
\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
d
e.shelf.notFound
=
\u
672A
\u
627E
\u5230\u6599\u
67B6
smfco
d
e.shelf.pos.notInStorage
=
\u6599\u
67B6[{0}]
\u
4E2D
\u
672A
\u
627E
\u5230\u
5E93
\u
4F4D[{1}]
smfco
d
e.shelf.pos.notInGroup
=
\u
7EC4
\u
4E2D
\u
672A
\u
627E
\u5230\u
5E93
\u
4F4D[{0}]
smfco
d
e.shelf.msg.hasReel
=
\u
5E93
\u
4F4D
\u
4E2D[{0}]
\u
5DF2
\u6709\u7269\u6599
smfco
d
e.shelf.msg.tipScanReel
=
\u
5E93
\u
4F4D[{0}]
\u
64CD
\u
4F5C
\u6210\u
529F,
\u
8BF7
\u
626B
\u
63CF
\u8981\u
653E
\u5165\u7684\u7269\u6599
smfco
d
e.shelf.msg.fastop=
\u6761\u7801\u
64CD
\u
4F5C
\u9891\u
7E41,
\u
8BF7
\u
7A0D
\u
540E
\u
518D
\u
8BD5
smfco
d
e.shelf.msg.outConfirm
=
\u
51FA
\u
5E93
\u
5B8C
\u6210
,
\u
5E93
\u
4F4D[{0}]
\u
706D
\u
706F
smfco
d
e.shelf.msg.noTask
=
\u
64CD
\u
4F5C
\u5931\u
8D25,
\u
5DF2
\u5728\u
5E93
\u
4F4D[{0}]
\u
4E2D,
\u
672A
\u
627E
\u5230\u
5BF9
\u
5E94
\u7684\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfco
d
e.shelf.msg.scanPos
=
\u
8BF7
\u5148\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
d
e.shelf.msg.inOk
=
\u
64CD
\u
4F5C
\u6210\u
529F,
\u
8BF7
\u
653E
\u5165\u
5E93
\u
4F4D[{0}]
smfco
d
e.label.noReel
=
\u
672A
\u
627E
\u5230\u
53EF
\u
51FA
\u
5E93
\u7684\u7269\u6599
smfco
r
e.shelf.nextPos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u7269\u6599
,
\u
8BF7
\u
91CD
\u
65B0
\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
r
e.shelf.nextPos.hasTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
4EFB
\u
52A1,
\u
8BF7
\u
91CD
\u
65B0
\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
r
e.shelf.notFound
=
\u
672A
\u
627E
\u5230\u6599\u
67B6
smfco
r
e.shelf.pos.notInStorage
=
\u6599\u
67B6[{0}]
\u
4E2D
\u
672A
\u
627E
\u5230\u
5E93
\u
4F4D[{1}]
smfco
r
e.shelf.pos.notInGroup
=
\u
7EC4
\u
4E2D
\u
672A
\u
627E
\u5230\u
5E93
\u
4F4D[{0}]
smfco
r
e.shelf.msg.hasReel
=
\u
5E93
\u
4F4D
\u
4E2D[{0}]
\u
5DF2
\u6709\u7269\u6599
smfco
r
e.shelf.msg.tipScanReel
=
\u
5E93
\u
4F4D[{0}]
\u
64CD
\u
4F5C
\u6210\u
529F,
\u
8BF7
\u
626B
\u
63CF
\u8981\u
653E
\u5165\u7684\u7269\u6599
smfco
r
e.shelf.msg.fastop=
\u6761\u7801\u
64CD
\u
4F5C
\u9891\u
7E41,
\u
8BF7
\u
7A0D
\u
540E
\u
518D
\u
8BD5
smfco
r
e.shelf.msg.outConfirm
=
\u
51FA
\u
5E93
\u
5B8C
\u6210
,
\u
5E93
\u
4F4D[{0}]
\u
706D
\u
706F
smfco
r
e.shelf.msg.noTask
=
\u
64CD
\u
4F5C
\u5931\u
8D25,
\u
5DF2
\u5728\u
5E93
\u
4F4D[{0}]
\u
4E2D,
\u
672A
\u
627E
\u5230\u
5BF9
\u
5E94
\u7684\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfco
r
e.shelf.msg.scanPos
=
\u
8BF7
\u5148\u
626B
\u
63CF
\u
5E93
\u
4F4D
\u7801
smfco
r
e.shelf.msg.inOk
=
\u
64CD
\u
4F5C
\u6210\u
529F,
\u
8BF7
\u
653E
\u5165\u
5E93
\u
4F4D[{0}]
smfco
r
e.label.noReel
=
\u
672A
\u
627E
\u5230\u
53EF
\u
51FA
\u
5E93
\u7684\u7269\u6599
smfcore.msd
=
MSD
\u
7BA1
\u7406
smfcore.msdManage
=
MSD
\u
5E93
\u
5B58
smfcore.msdData
=
MSD
\u
8FFD
\u
6EAF
\u6027
smfcore.msdSetting
=
MSD
\u
8BBE
\u
7F6E
smfcore.translation
=
\u
8D44
\u
6E90
\u
7FFB
\u
8BD1
smfcode.languageCanotNull
=
\u
8BED
\u
8A00
\u
7C7B
\u
578B
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfcode.noLanguageSetAccess
=
\u
6CA1
\u6709\u
7F16
\u
8F91
\u
8BED
\u
8A00
\u7684\u6743\u9650
smfcode.languageCanotRemoveAll
=
\u
4E0D
\u
80FD
\u5220\u9664\u6240\u6709\u
8BED
\u
8A00
\ No newline at end of file
smfcore.languageCanotNull
=
\u
8BED
\u
8A00
\u
7C7B
\u
578B
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfcore.noLanguageSetAccess
=
\u
6CA1
\u6709\u
7F16
\u
8F91
\u
8BED
\u
8A00
\u7684\u6743\u9650
smfcore.languageCanotRemoveAll
=
\u
4E0D
\u
80FD
\u5220\u9664\u6240\u6709\u
8BED
\u
8A00
smfcore.solderPaste
=
\u9521\u
818F
\u
7BA1
\u7406
smfcore.solderPasteKanban
=
\u
8BBE
\u5907\u6982\u
89C8
smfcore.solderPasteManage
=
\u
5E93
\u
5B58
smfcore.solderPasteData
=
\u
8FFD
\u
6EAF
\u6027
smfcore.solderPasteSetting
=
\u
8BBE
\u
7F6E
\ No newline at end of file
src/main/resources/messages_zh_TW.properties
查看文件 @
ee52703
smfco
d
e.valueCanotNull
=
{0}
\u
4E0D
\u
80FD
\u7232\u
7A7A
smfco
d
e.feleFormatError
=
\u6587\u
4EF6
\u
683C
\u
5F0F
\u
932F
\u
8AA4
\u
FF01,
\u
50C5
\u
652F
\u6301
{0}
\u
683C
\u
5F0F
smfco
d
e.valueAlreadyExist
=
{0}[{1}]
\u
5DF2
\u
5B58
\u5728
smfco
d
e.valueNotExist
=
{0}[{1}]
\u
4E0D
\u
5B58
\u5728
smfco
d
e.fileToLong
=
\u6587\u
4EF6
\u
8D85
\u
51FA
\u
898F
\u
5B9A
\u5927\u
5C0F
smfco
d
e.fileError
=
\u6587\u
4EF6
\u
89E3
\u6790\u5931\u6557
smfco
d
e.valueNotFind
=
\u
672A
\u
627E
\u5230
{0}[{1}]
smfco
d
e.humidityValueError
=
\u
6EAB
\u
5EA6
\u
7BC4
\u
570D
\u6578\u
64DA
\u
932F
\u
8AA4
smfco
d
e.humidityShowValueError
=
\u
6EAB
\u
5EA6
\u
986F
\u
793A
\u
7BC4
\u
570D
\u6578\u
64DA
\u
932F
\u
8AA4
smfco
d
e.temperatureValueError
=
\u
6FD5
\u
5EA6
\u
7BC4
\u
570D
\u6578\u
64DA
\u
932F
\u
8AA4
smfco
d
e.temperatureShowValueError
=
\u
6FD5
\u
5EA6
\u
986F
\u
793A
\u
7BC4
\u
570D
\u6578\u
64DA
\u
932F
\u
8AA4
smfco
d
e.notActivated
=
\u
8CEC
\u
865F
\u
672A
\u
6FC0
\u
6D3B
smfco
d
e.userInfoError
=
\u7528\u6236\u
4FE1
\u
606F
\u
4E0D
\u
5B8C
\u6574
smfco
d
e.noaccess
=
\u7121\u
6B0A
\u9650\u
4FEE
\u6539\u
6B64
\u
89D2
\u8272\u7684\u
83DC
\u
55AE
smfco
d
e.notSelRole
=
\u
8ACB
\u8981\u
4FEE
\u6539\u7684\u9078\u
64C7
\u
89D2
\u8272
smfco
d
e.posIsused
=
\u6599\u5009
[{0}]
\u7684\u
5EAB
\u
4F4D[{1}}]
\u6709\u6599
[{2}],
\u
522A
\u9664\u5931\u6557
smfco
d
e.thePosIsused
=
\u
5EAB
\u
4F4D[{0}]
\u6709\u6599
[{1}],
\u
4E0D
\u
80FD
\u
522A
\u9664
smfco
d
e.groupWithStorage
=
\u
7D44[{0}]
\u
5DF2
\u
548C
\u
8A2D
\u5099\u
95DC
\u
806F
smfco
d
e.groupWithUser
=
\u
7D44[{0}]
\u
5DF2
\u
548C
\u7528\u6236\u
95DC
\u
806F
smfco
d
e.canotDelSelf
=
\u
522A
\u9664\u7528\u6236\u
FF1A
\u
4E0D
\u
80FD
\u
522A
\u9664\u
81EA
\u
5DF1
smfco
d
e.canotDelUser
=
\u
522A
\u9664\u7528\u6236\u
FF1A
\u
6B64
\u7528\u6236\u
4E0D
\u
80FD
\u
522A
\u9664
smfco
d
e.oldPwdError
=
\u
4FEE
\u6539\u5931\u6557\u
FF0C
\u
820A
\u
5BC6
\u
78BC
\u
932F
\u
8AA4
smfco
d
e.newPwdError
=
\u
65B0
\u
5BC6
\u
78BC
\u
4E0D
\u
80FD
\u8207\u
820A
\u
5BC6
\u
78BC
\u
76F8
\u
540C
smfco
d
e.pwdError
=
\u
4FEE
\u6539\u
90F5
\u
7BB1
\u5931\u6557\u
FF0C
\u
5BC6
\u
78BC
\u
932F
\u
8AA4
smfco
d
e.hasNoAccess
=
\u7121\u
6B0A
\u9650\u
4FEE
\u6539\u
6B64
\u7528\u6236\u
4FE1
\u
606F
smfco
d
e.noAccessUpdate
=
\u
6C92
\u6709\u
522A
\u9664\u
83DC
\u
55AE
\u7684\u
6B0A
\u9650
smfco
d
e.roleCannotDel
=
\u
89D2
\u8272
[{0}]
\u6709
[{1}]
\u
500B
\u7528\u6236\u
95DC
\u
806F
\u6539\u
89D2
\u8272
,
\u
4E0D
\u
80FD
\u
522A
\u9664
smfco
r
e.valueCanotNull
=
{0}
\u
4E0D
\u
80FD
\u7232\u
7A7A
smfco
r
e.feleFormatError
=
\u6587\u
4EF6
\u
683C
\u
5F0F
\u
932F
\u
8AA4
\u
FF01,
\u
50C5
\u
652F
\u6301
{0}
\u
683C
\u
5F0F
smfco
r
e.valueAlreadyExist
=
{0}[{1}]
\u
5DF2
\u
5B58
\u5728
smfco
r
e.valueNotExist
=
{0}[{1}]
\u
4E0D
\u
5B58
\u5728
smfco
r
e.fileToLong
=
\u6587\u
4EF6
\u
8D85
\u
51FA
\u
898F
\u
5B9A
\u5927\u
5C0F
smfco
r
e.fileError
=
\u6587\u
4EF6
\u
89E3
\u6790\u5931\u6557
smfco
r
e.valueNotFind
=
\u
672A
\u
627E
\u5230
{0}[{1}]
smfco
r
e.humidityValueError
=
\u
6EAB
\u
5EA6
\u
7BC4
\u
570D
\u6578\u
64DA
\u
932F
\u
8AA4
smfco
r
e.humidityShowValueError
=
\u
6EAB
\u
5EA6
\u
986F
\u
793A
\u
7BC4
\u
570D
\u6578\u
64DA
\u
932F
\u
8AA4
smfco
r
e.temperatureValueError
=
\u
6FD5
\u
5EA6
\u
7BC4
\u
570D
\u6578\u
64DA
\u
932F
\u
8AA4
smfco
r
e.temperatureShowValueError
=
\u
6FD5
\u
5EA6
\u
986F
\u
793A
\u
7BC4
\u
570D
\u6578\u
64DA
\u
932F
\u
8AA4
smfco
r
e.notActivated
=
\u
8CEC
\u
865F
\u
672A
\u
6FC0
\u
6D3B
smfco
r
e.userInfoError
=
\u7528\u6236\u
4FE1
\u
606F
\u
4E0D
\u
5B8C
\u6574
smfco
r
e.noaccess
=
\u7121\u
6B0A
\u9650\u
4FEE
\u6539\u
6B64
\u
89D2
\u8272\u7684\u
83DC
\u
55AE
smfco
r
e.notSelRole
=
\u
8ACB
\u8981\u
4FEE
\u6539\u7684\u9078\u
64C7
\u
89D2
\u8272
smfco
r
e.posIsused
=
\u6599\u5009
[{0}]
\u7684\u
5EAB
\u
4F4D[{1}}]
\u6709\u6599
[{2}],
\u
522A
\u9664\u5931\u6557
smfco
r
e.thePosIsused
=
\u
5EAB
\u
4F4D[{0}]
\u6709\u6599
[{1}],
\u
4E0D
\u
80FD
\u
522A
\u9664
smfco
r
e.groupWithStorage
=
\u
7D44[{0}]
\u
5DF2
\u
548C
\u
8A2D
\u5099\u
95DC
\u
806F
smfco
r
e.groupWithUser
=
\u
7D44[{0}]
\u
5DF2
\u
548C
\u7528\u6236\u
95DC
\u
806F
smfco
r
e.canotDelSelf
=
\u
522A
\u9664\u7528\u6236\u
FF1A
\u
4E0D
\u
80FD
\u
522A
\u9664\u
81EA
\u
5DF1
smfco
r
e.canotDelUser
=
\u
522A
\u9664\u7528\u6236\u
FF1A
\u
6B64
\u7528\u6236\u
4E0D
\u
80FD
\u
522A
\u9664
smfco
r
e.oldPwdError
=
\u
4FEE
\u6539\u5931\u6557\u
FF0C
\u
820A
\u
5BC6
\u
78BC
\u
932F
\u
8AA4
smfco
r
e.newPwdError
=
\u
65B0
\u
5BC6
\u
78BC
\u
4E0D
\u
80FD
\u8207\u
820A
\u
5BC6
\u
78BC
\u
76F8
\u
540C
smfco
r
e.pwdError
=
\u
4FEE
\u6539\u
90F5
\u
7BB1
\u5931\u6557\u
FF0C
\u
5BC6
\u
78BC
\u
932F
\u
8AA4
smfco
r
e.hasNoAccess
=
\u7121\u
6B0A
\u9650\u
4FEE
\u6539\u
6B64
\u7528\u6236\u
4FE1
\u
606F
smfco
r
e.noAccessUpdate
=
\u
6C92
\u6709\u
522A
\u9664\u
83DC
\u
55AE
\u7684\u
6B0A
\u9650
smfco
r
e.roleCannotDel
=
\u
89D2
\u8272
[{0}]
\u6709
[{1}]
\u
500B
\u7528\u6236\u
95DC
\u
806F
\u6539\u
89D2
\u8272
,
\u
4E0D
\u
80FD
\u
522A
\u9664
smfcore.notFindPos
=
\u
672A
\u
627E
\u5230\u9396\u
5B9A
\u
5EAB
\u
4F4D
smfcore.error.barcode.empty
=
\u
672A
\u6383\u5230\u
689D
\u
78BC
smfcore.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
500B
\u6709\u6548\u
689D
\u
78BC,
\u7121\u
6CD5
\u5165\u
5EAB
smfcore.error.barcode.expired
=
\u7269\u6599\u
5DF2
\u
904E
\u
671F,
\u7121\u
6CD5
\u5165\u
5EAB.
smfcore.allBoxView.noReel
=
\u
5EAB
\u
4F4D{0}
\u
4E2D
\u7121\u7269\u6599
smfco
d
e.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
500B
\u6709\u6548\u7684\u
689D
\u
78BC
smfco
d
e.error.barcode.noValidCode
=
\u7121\u6548\u7684\u
689D
\u
78BC
smfco
r
e.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
500B
\u6709\u6548\u7684\u
689D
\u
78BC
smfco
r
e.error.barcode.noValidCode
=
\u7121\u6548\u7684\u
689D
\u
78BC
smfcore.error.barcode.noValidCode
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u
689D
\u
78BC
smfco
d
e.error.barcode.executing
=
\u
689D
\u
78BC[{0}}]
\u
4EFB
\u
52D9
\u
6B63
\u5728\u
57F7
\u
884C
smfco
d
e.error.pos.notExist
=
\u
5EAB
\u
4F4D[{0}]
\u
4E0D
\u
5B58
\u5728
,
\u7121\u
6CD5
\u5165\u
5EAB
smfco
d
e.error.pos.wrong
=
\u
5EAB
\u
4F4D[{0}]
\u8207\u6599\u5009
[{1}}]
\u
4E0D
\u5339\u
914D,
\u7121\u
6CD5
\u5165\u
5EAB
smfco
d
e.error.pos.hasReel
=
\u
5EAB
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
,
\u7121\u
6CD5
\u5165\u
5EAB
smfco
d
e.error.pos.sizeNotMatch
=
\u6599\u
76E4
\u
5C3A
\u
5BF8[{0}}]
\u8207\u
5EAB
\u
4F4D{1}
\u
5C3A
\u
5BF8[{2}]
\u
4E0D
\u
7B26,
\u7121\u
6CD5
\u5165\u
5EAB
smfco
d
e.error.storage.offline
=
\u6599\u5009
[{0}]
\u
96E2
\u
7DDA
smfco
d
e.error.barcode.invalid
=
\u
689D
\u
78BC
\u7121\u6548
smfco
d
e.error.barcode.wrongSize
=
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
smfco
d
e.error.barcode.wrongQty
=
\u
689D
\u
78BC[{0}]
\u
5C0D
\u
61C9
\u7684\u6578\u
91CF<=0
\u7232
: {1}
smfco
d
e.error.barcode.taskNotEnd
=
\u6599\u
76E4[{0}]
\u7684\u
64CD
\u
4F5C
\u
672A
\u
5B8C
\u6210
,
\u7121\u
6CD5
\u
57F7
\u
884C
\u5165\u
5EAB
\u
64CD
\u
4F5C
smfco
d
e.error.columnNotExist
=
\u
5FC5
\u9808\u5305\u
542B[{0}
\u5217
smfco
r
e.error.barcode.executing
=
\u
689D
\u
78BC[{0}}]
\u
4EFB
\u
52D9
\u
6B63
\u5728\u
57F7
\u
884C
smfco
r
e.error.pos.notExist
=
\u
5EAB
\u
4F4D[{0}]
\u
4E0D
\u
5B58
\u5728
,
\u7121\u
6CD5
\u5165\u
5EAB
smfco
r
e.error.pos.wrong
=
\u
5EAB
\u
4F4D[{0}]
\u8207\u6599\u5009
[{1}}]
\u
4E0D
\u5339\u
914D,
\u7121\u
6CD5
\u5165\u
5EAB
smfco
r
e.error.pos.hasReel
=
\u
5EAB
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
,
\u7121\u
6CD5
\u5165\u
5EAB
smfco
r
e.error.pos.sizeNotMatch
=
\u6599\u
76E4
\u
5C3A
\u
5BF8[{0}}]
\u8207\u
5EAB
\u
4F4D{1}
\u
5C3A
\u
5BF8[{2}]
\u
4E0D
\u
7B26,
\u7121\u
6CD5
\u5165\u
5EAB
smfco
r
e.error.storage.offline
=
\u6599\u5009
[{0}]
\u
96E2
\u
7DDA
smfco
r
e.error.barcode.invalid
=
\u
689D
\u
78BC
\u7121\u6548
smfco
r
e.error.barcode.wrongSize
=
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
smfco
r
e.error.barcode.wrongQty
=
\u
689D
\u
78BC[{0}]
\u
5C0D
\u
61C9
\u7684\u6578\u
91CF<=0
\u7232
: {1}
smfco
r
e.error.barcode.taskNotEnd
=
\u6599\u
76E4[{0}]
\u7684\u
64CD
\u
4F5C
\u
672A
\u
5B8C
\u6210
,
\u7121\u
6CD5
\u
57F7
\u
884C
\u5165\u
5EAB
\u
64CD
\u
4F5C
smfco
r
e.error.columnNotExist
=
\u
5FC5
\u9808\u5305\u
542B[{0}
\u5217
smfcore.storage.error.notExist
=
\u
672A
\u
627E
\u5230\u6599\u5009
{0}
smfco
d
e.error.barcode.inQueue
=
\u
4E8C
\u
7DAD
\u
78BC[{0}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
968A
\u5217\u
4E2D
\u
FF0C
\u
64CD
\u
4F5C
\u5931\u6557
smfco
d
e.error.pos.inQueue
=
\u
4F4D
\u
7F6E:[{0}}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
968A
\u5217\u
4E2D,
\u
64CD
\u
4F5C
\u5931\u6557
smfco
d
e.columnNotExist
=
\u
5FC5
\u9808\u5305\u
542B[{0}
\u5217
smfco
r
e.error.barcode.inQueue
=
\u
4E8C
\u
7DAD
\u
78BC[{0}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
968A
\u5217\u
4E2D
\u
FF0C
\u
64CD
\u
4F5C
\u5931\u6557
smfco
r
e.error.pos.inQueue
=
\u
4F4D
\u
7F6E:[{0}}]
\u
5DF2
\u5728\u
64CD
\u
4F5C
\u
968A
\u5217\u
4E2D,
\u
64CD
\u
4F5C
\u5931\u6557
smfco
r
e.columnNotExist
=
\u
5FC5
\u9808\u5305\u
542B[{0}
\u5217
smfcore.conotUpdate
=
\u7528\u6236\u
540Dadmin
\u
4E0D
\u
80FD
\u
4FEE
\u6539
smfcore.unfinished
=
\u
689D
\u
78BC[{0}]
\u7684\u
4EFB
\u
52D9
\u9084\u
672A
\u
7D50
\u
675F
smfcore.ok
=
ok
...
...
@@ -77,15 +77,15 @@ smfcore.taskLog=\u7269\u6599\u65E5\u5FD7
smfcore.user
=
\u7528\u6236\u
7BA1
\u7406
smfcore.peoples
=
\u7528\u6236\u
7BA1
\u7406
smfcore.role
=
\u
89D2
\u8272\u
7BA1
\u7406
smfco
d
e.menuNotExist
=
\u
83DC
\u
55AE{0}
\u
4E0D
\u
5B58
\u5728
smfco
d
e.noValidStorage
=
\u6599\u5009\u5217\u8868\u
4E2D
\u
672A
\u
627E
\u5230\u
53EF
\u7528\u7684\u6599\u5009
smfco
d
e.error.barcode.exist
=
[{0}}]
\u
5DF2
\u5728
{1}}[{2}}]
\u
4E2D
smfco
r
e.menuNotExist
=
\u
83DC
\u
55AE{0}
\u
4E0D
\u
5B58
\u5728
smfco
r
e.noValidStorage
=
\u6599\u5009\u5217\u8868\u
4E2D
\u
672A
\u
627E
\u5230\u
53EF
\u7528\u7684\u6599\u5009
smfco
r
e.error.barcode.exist
=
[{0}}]
\u
5DF2
\u5728
{1}}[{2}}]
\u
4E2D
smfcore.barcodeSetting
=
\u
689D
\u
78BC
\u
8A2D
\u
7F6E
smfcore.posNotExist
=
\u
5EAB
\u
4F4D
\u
4E0D
\u
5B58
\u5728
smfcore.error
=
\u
51FA
\u
932F{0}
smfcore.userManager
=
\u7528\u6236\u
7BA1
\u7406
smfco
d
e.cannotRemove
=
\u
522A
\u9664\u
5EAB
\u
4F4D
\u5931\u6557\u
FF0C
\u
5EAB
\u
4F4D[{0}]
\u
4E2D
\u6709\u6599
smfco
d
e.nogroupaccess
=
\u
6C92
\u6709\u
7D44[{0}]
\u7684\u
64CD
\u
4F5C
\u
6B0A
smfco
r
e.cannotRemove
=
\u
522A
\u9664\u
5EAB
\u
4F4D
\u5931\u6557\u
FF0C
\u
5EAB
\u
4F4D[{0}]
\u
4E2D
\u6709\u6599
smfco
r
e.nogroupaccess
=
\u
6C92
\u6709\u
7D44[{0}]
\u7684\u
64CD
\u
4F5C
\u
6B0A
smfcore.outSetting
=
\u
51FA
\u
5EAB
\u
7B56
\u7565
smfcore.sysSetting
=
\u
7CFB
\u
7D71
\u
8A2D
\u
7F6E
smfcore.help
=
\u
5E6B
\u
52A9
...
...
@@ -93,53 +93,58 @@ smfcore.instruction=\u8AAA\u660E\u66F8
smfcore.about
=
\u
95DC
\u
65BC
smfcore.tacticsOuput
=
\u
7B56
\u7565\u
51FA
\u
5EAB
smfcore.labelOuput
=
\u7269\u6599\u5206\u
7D44
smfco
d
e.order.out.executing
=
\u
5DE5
\u
55AE
\u
6B63
\u5728\u
57F7
\u
884C
smfco
d
e.order.out.notFound
=
\u
5DE5
\u
55AE
\u
672A
\u
627E
\u5230
smfco
d
e.order.out.maxOrder
=
\u
5DF2
\u9054\u5230\u6700\u5927\u
53EF
\u
57F7
\u
884C
\u
5DE5
\u
55AE
\u6578
smfco
d
e.order.out.noTask
=
\u
5DE5
\u
55AE
\u7121\u
53EF
\u
57F7
\u
884C
\u7684\u
4EFB
\u
52D9
smfco
d
e.cannotUpdateOrderNum
=
\u
5DE5
\u
55AE
\u
5DF2
\u
51FA
\u
5EAB
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u6578\u
91CF
smfco
d
e.order.close.success
=
\u
5DE5
\u
55AE
\u
95DC
\u9589\u6210\u
529F
smfco
d
e.order.close.taskNotEnd
=
\u
5DE5
\u
55AE
\u9084\u6709\u
672A
\u
5B8C
\u6210\u7684\u
4EFB
\u
52D9
smfco
r
e.order.out.executing
=
\u
5DE5
\u
55AE
\u
6B63
\u5728\u
57F7
\u
884C
smfco
r
e.order.out.notFound
=
\u
5DE5
\u
55AE
\u
672A
\u
627E
\u5230
smfco
r
e.order.out.maxOrder
=
\u
5DF2
\u9054\u5230\u6700\u5927\u
53EF
\u
57F7
\u
884C
\u
5DE5
\u
55AE
\u6578
smfco
r
e.order.out.noTask
=
\u
5DE5
\u
55AE
\u7121\u
53EF
\u
57F7
\u
884C
\u7684\u
4EFB
\u
52D9
smfco
r
e.cannotUpdateOrderNum
=
\u
5DE5
\u
55AE
\u
5DF2
\u
51FA
\u
5EAB
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u6578\u
91CF
smfco
r
e.order.close.success
=
\u
5DE5
\u
55AE
\u
95DC
\u9589\u6210\u
529F
smfco
r
e.order.close.taskNotEnd
=
\u
5DE5
\u
55AE
\u9084\u6709\u
672A
\u
5B8C
\u6210\u7684\u
4EFB
\u
52D9
smfcore.manualOut
=
\u
624B
\u
52D5
\u
51FA
\u
5EAB
smfco
d
e.error.barcode.noRules
=
\u
89E3
\u6790\u
898F
\u5247\u
672A
\u
5B9A
\u
7FA9
smfco
d
e.error.barcode.wrongLength
=
\u
689D
\u
78BC[{0}]
\u9577\u
5EA6
\u
932F
\u
8AA4
smfco
d
e.error.barcode.noField
=
\u
689D
\u
78BC
\u
89E3
\u6790\u5931\u6557\u
FF0C
\u
672A
\u
627E
\u5230
{0}
\u
5B57
\u
6BB5
smfco
d
e.error.barcode.pnNotExist
=
\u
6A94
\u6848
{0}
\u
4E0D
\u
5B58
\u5728
smfco
d
e.error.barcode.invalid
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u
689D
\u
78BC
smfco
d
e.error.barcode.locked
=
\u
5EAB
\u
4F4D[{0}]
\u
5DF2
\u
88AB
\u9396\u
5B9A
smfco
d
e.manualOut.ok
=
\u
624B
\u
52D5
\u
51FA
\u
5EAB
\u6210\u
529F
smfco
d
e.manualOut.notFound
=
\u5009\u
5EAB
\u
4E2D
\u
672A
\u
627E
\u5230\u6599\u
76E4
\u
4FE1
\u
606F
smfco
d
e.order.lineCanotNull
=
\u
7DDA
\u5225\u
4E0D
\u
80FD
\u
70BA
\u
7A7A
smfco
d
e.order.cannotUpdateLine
=
\u
5DE5
\u
55AE
\u
5DF2
\u
51FA
\u
5EAB
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u
7DDA
\u5225
smfco
d
e.order.uploadOK
=
\u
5DE5
\u
55AE
\u
4E0A
\u
50B3
\u6210\u
529F
smfco
d
e.order.ameExists
=
\u
5DE5
\u
55AE
\u
540D
\u
7A31[{0}]
\u
5DF2
\u
5B58
\u5728
smfco
d
e.order.hasClose
=
\u
5DE5
\u
55AE
\u
5DF2
\u
95DC
\u9589
smfco
d
e.order.supplementOutFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5EAB
\u7684\u
88DC
\u6599
smfco
d
e.materialBox.quantityshort
=
\u7269\u6599\u6570\u
91CF
\u
4E0D
\u
8DB3
smfco
d
e.materialBox.invalid
=
\u
672A
\u
627E
\u5230\u6599\u
76D2
\u
4FE1
\u
606F{0}
smfco
d
e.materialBox.noReel
=
\u6599\u
76D2
\u
4E2D
\u
672A
\u
627E
\u5230\u
5C0D
\u
61C9
\u7269\u6599
smfco
d
e.materialBox.boxNoReel
=
\u6599\u
76D2
\u
4E2D
\u7121\u7269\u6599
smfco
d
e.materialBox.inPos
=
\u7269\u6599\u
5DF2
\u5728\u
5EAB
\u
4F4D{0}
\u
4E2D
smfco
d
e.materialBox.inOtherBox
=
\u7269\u6599\u
5DF2
\u5728\u6599\u
76D2{0}
\u
4E2D
smfco
r
e.error.barcode.noRules
=
\u
89E3
\u6790\u
898F
\u5247\u
672A
\u
5B9A
\u
7FA9
smfco
r
e.error.barcode.wrongLength
=
\u
689D
\u
78BC[{0}]
\u9577\u
5EA6
\u
932F
\u
8AA4
smfco
r
e.error.barcode.noField
=
\u
689D
\u
78BC
\u
89E3
\u6790\u5931\u6557\u
FF0C
\u
672A
\u
627E
\u5230
{0}
\u
5B57
\u
6BB5
smfco
r
e.error.barcode.pnNotExist
=
\u
6A94
\u6848
{0}
\u
4E0D
\u
5B58
\u5728
smfco
r
e.error.barcode.invalid
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u
689D
\u
78BC
smfco
r
e.error.barcode.locked
=
\u
5EAB
\u
4F4D[{0}]
\u
5DF2
\u
88AB
\u9396\u
5B9A
smfco
r
e.manualOut.ok
=
\u
624B
\u
52D5
\u
51FA
\u
5EAB
\u6210\u
529F
smfco
r
e.manualOut.notFound
=
\u5009\u
5EAB
\u
4E2D
\u
672A
\u
627E
\u5230\u6599\u
76E4
\u
4FE1
\u
606F
smfco
r
e.order.lineCanotNull
=
\u
7DDA
\u5225\u
4E0D
\u
80FD
\u
70BA
\u
7A7A
smfco
r
e.order.cannotUpdateLine
=
\u
5DE5
\u
55AE
\u
5DF2
\u
51FA
\u
5EAB
\u
FF0C
\u
4E0D
\u
80FD
\u
4FEE
\u6539\u
7DDA
\u5225
smfco
r
e.order.uploadOK
=
\u
5DE5
\u
55AE
\u
4E0A
\u
50B3
\u6210\u
529F
smfco
r
e.order.ameExists
=
\u
5DE5
\u
55AE
\u
540D
\u
7A31[{0}]
\u
5DF2
\u
5B58
\u5728
smfco
r
e.order.hasClose
=
\u
5DE5
\u
55AE
\u
5DF2
\u
95DC
\u9589
smfco
r
e.order.supplementOutFail
=
\u
672A
\u
627E
\u5230\u
53EF
\u
4EE5
\u
51FA
\u
5EAB
\u7684\u
88DC
\u6599
smfco
r
e.materialBox.quantityshort
=
\u7269\u6599\u6570\u
91CF
\u
4E0D
\u
8DB3
smfco
r
e.materialBox.invalid
=
\u
672A
\u
627E
\u5230\u6599\u
76D2
\u
4FE1
\u
606F{0}
smfco
r
e.materialBox.noReel
=
\u6599\u
76D2
\u
4E2D
\u
672A
\u
627E
\u5230\u
5C0D
\u
61C9
\u7269\u6599
smfco
r
e.materialBox.boxNoReel
=
\u6599\u
76D2
\u
4E2D
\u7121\u7269\u6599
smfco
r
e.materialBox.inPos
=
\u7269\u6599\u
5DF2
\u5728\u
5EAB
\u
4F4D{0}
\u
4E2D
smfco
r
e.materialBox.inOtherBox
=
\u7269\u6599\u
5DF2
\u5728\u6599\u
76D2{0}
\u
4E2D
smfcore.materialBox
=
\u6599\u
76D2
\u
64CD
\u
4F5C
smfco
d
e.shelf.nextPos.hasReel
=
\u
5EAB
\u
4F4D[{0}]
\u
5DF2
\u6709\u7269\u6599\u
FF0C
\u
8ACB
\u
91CD
\u
65B0
\u6383\u
63CF
\u
5EAB
\u
4F4D
\u
78BC
smfco
d
e.shelf.nextPos.hasTask
=
\u
5EAB
\u
4F4D[{0}]
\u
5DF2
\u6709\u
4EFB
\u
52D9
\u
FF0C
\u
8ACB
\u
91CD
\u
65B0
\u6383\u
63CF
\u
5EAB
\u
4F4D
\u
78BC
smfco
d
e.shelf.notFound
=
\u
672A
\u
627E
\u5230\u6599\u
67B6
smfco
d
e.shelf.pos.notInStorage
=
\u6599\u
67B6[{0}]
\u
4E2D
\u
672A
\u
627E
\u5230\u
5EAB
\u
4F4D[{1}]
smfco
d
e.shelf.pos.notInGroup
=
\u
7D44
\u
4E2D
\u
672A
\u
627E
\u5230\u
5EAB
\u
4F4D[{0}]
smfco
d
e.shelf.msg.hasReel
=
\u
5EAB
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
smfco
d
e.shelf.msg.tipScanReel
=
\u
5EAB
\u
4F4D[{0}]
\u
64CD
\u
4F5C
\u6210\u
529F
\u
FF0C
\u
8ACB
\u6383\u
63CF
\u8981\u
653E
\u5165\u7684\u7269\u6599
smfco
d
e.shelf.msg.fastop=
\u
689D
\u
78BC
\u
64CD
\u
4F5C
\u
983B
\u
7E41
\u
FF0C
\u
8ACB
\u
7A0D
\u
5F8C
\u
518D
\u
8A66
smfco
d
e.shelf.msg.outConfirm
=
\u
51FA
\u
5EAB
\u
5B8C
\u6210\u
FF0C
\u
5EAB
\u
4F4D[{0}]
\u
6EC5
\u
71C8
smfco
d
e.shelf.msg.noTask
=
\u
64CD
\u
4F5C
\u5931\u6557\u
FF0C
\u
5DF2
\u5728\u
5EAB
\u
4F4D[{0}]
\u
4E2D
\u
FF0C
\u
672A
\u
627E
\u5230\u
5C0D
\u
61C9
\u7684\u
51FA
\u
5EAB
\u
4EFB
\u
52D9
smfco
d
e.shelf.msg.scanPos
=
\u
6E05
\u9592\u6383\u
63CF
\u
5EAB
\u
4F4D
\u
78BC
smfco
d
e.shelf.msg.inOk
=
\u
64CD
\u
4F5C
\u6210\u
529F
\u
FF0C
\u
8ACB
\u
653E
\u5165\u
5EAB
\u
4F4D[{0}]
smfco
d
e.label.noReel
=
\u
672A
\u
627E
\u5230\u
53EF
\u
51FA
\u
5EAB
\u7684\u7269\u6599
smfco
r
e.shelf.nextPos.hasReel
=
\u
5EAB
\u
4F4D[{0}]
\u
5DF2
\u6709\u7269\u6599\u
FF0C
\u
8ACB
\u
91CD
\u
65B0
\u6383\u
63CF
\u
5EAB
\u
4F4D
\u
78BC
smfco
r
e.shelf.nextPos.hasTask
=
\u
5EAB
\u
4F4D[{0}]
\u
5DF2
\u6709\u
4EFB
\u
52D9
\u
FF0C
\u
8ACB
\u
91CD
\u
65B0
\u6383\u
63CF
\u
5EAB
\u
4F4D
\u
78BC
smfco
r
e.shelf.notFound
=
\u
672A
\u
627E
\u5230\u6599\u
67B6
smfco
r
e.shelf.pos.notInStorage
=
\u6599\u
67B6[{0}]
\u
4E2D
\u
672A
\u
627E
\u5230\u
5EAB
\u
4F4D[{1}]
smfco
r
e.shelf.pos.notInGroup
=
\u
7D44
\u
4E2D
\u
672A
\u
627E
\u5230\u
5EAB
\u
4F4D[{0}]
smfco
r
e.shelf.msg.hasReel
=
\u
5EAB
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
smfco
r
e.shelf.msg.tipScanReel
=
\u
5EAB
\u
4F4D[{0}]
\u
64CD
\u
4F5C
\u6210\u
529F
\u
FF0C
\u
8ACB
\u6383\u
63CF
\u8981\u
653E
\u5165\u7684\u7269\u6599
smfco
r
e.shelf.msg.fastop=
\u
689D
\u
78BC
\u
64CD
\u
4F5C
\u
983B
\u
7E41
\u
FF0C
\u
8ACB
\u
7A0D
\u
5F8C
\u
518D
\u
8A66
smfco
r
e.shelf.msg.outConfirm
=
\u
51FA
\u
5EAB
\u
5B8C
\u6210\u
FF0C
\u
5EAB
\u
4F4D[{0}]
\u
6EC5
\u
71C8
smfco
r
e.shelf.msg.noTask
=
\u
64CD
\u
4F5C
\u5931\u6557\u
FF0C
\u
5DF2
\u5728\u
5EAB
\u
4F4D[{0}]
\u
4E2D
\u
FF0C
\u
672A
\u
627E
\u5230\u
5C0D
\u
61C9
\u7684\u
51FA
\u
5EAB
\u
4EFB
\u
52D9
smfco
r
e.shelf.msg.scanPos
=
\u
6E05
\u9592\u6383\u
63CF
\u
5EAB
\u
4F4D
\u
78BC
smfco
r
e.shelf.msg.inOk
=
\u
64CD
\u
4F5C
\u6210\u
529F
\u
FF0C
\u
8ACB
\u
653E
\u5165\u
5EAB
\u
4F4D[{0}]
smfco
r
e.label.noReel
=
\u
672A
\u
627E
\u5230\u
53EF
\u
51FA
\u
5EAB
\u7684\u7269\u6599
smfcore.msd
=
MSD
\u
7BA1
\u7406
smfcore.msdManage
=
MSD
\u
5E93
\u
5B58
smfcore.msdData
=
MSD
\u
8FFD
\u
6EAF
\u6027
smfcore.msdSetting
=
MSD
\u
8A2D
\u
7F6E
smfcore.translation
=
\u
8CC7
\u
6E90
\u
7FFB
\u
8B6F
smfcode.languageCanotNull
=
\u
8A9E
\u
8A00
\u
985E
\u
578B
\u
4E0D
\u
80FD
\u
70BA
\u
7A7A
smfcode.noLanguageSetAccess
=
\u
6C92
\u6709\u
7DE8
\u
8F2F
\u
8A9E
\u
8A00
\u7684\u
6B0A
\u9650
smfcode.languageCanotRemoveAll
=
\u
4E0D
\u
80FD
\u
522A
\u9664\u6240\u6709\u
8A9E
\u
8A00
\ No newline at end of file
smfcore.languageCanotNull
=
\u
8A9E
\u
8A00
\u
985E
\u
578B
\u
4E0D
\u
80FD
\u
70BA
\u
7A7A
smfcore.noLanguageSetAccess
=
\u
6C92
\u6709\u
7DE8
\u
8F2F
\u
8A9E
\u
8A00
\u7684\u
6B0A
\u9650
smfcore.languageCanotRemoveAll
=
\u
4E0D
\u
80FD
\u
522A
\u9664\u6240\u6709\u
8A9E
\u
8A00
smfcore.solderPaste
=
\u
932B
\u
818F
\u
7BA1
\u7406
smfcore.solderPasteKanban
=
\u
8A2D
\u5099\u6982\u
89BD
smfcore.solderPasteManage
=
\u
5EAB
\u
5B58
smfcore.solderPasteData
=
\u
8FFD
\u
6EAF
\u6027
smfcore.solderPasteSetting
=
\u
8A2D
\u
7F6E
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论