Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit b5bbc12e
由
sunke
编写于
2021-08-16 11:18:27 +0800
浏览文件
选项
浏览文件
标签
下载
差异文件
Merge remote-tracking branch 'origin/master'
2 个父辈
c56351d1
572aa503
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
294 行增加
和
93 行删除
src/main/java/com/neotel/smfcore/common/exception/handler/GlobalExceptionHandler.java
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/SisoBoxHandler.java
src/main/java/com/neotel/smfcore/core/storage/enums/DeviceType.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/resources/messages_ja_JP.properties
src/main/java/com/neotel/smfcore/common/exception/handler/GlobalExceptionHandler.java
查看文件 @
b5bbc12
...
...
@@ -83,10 +83,10 @@ public class GlobalExceptionHandler {
@ExceptionHandler
(
value
=
ValidateException
.
class
)
public
ResponseEntity
<
ApiError
>
validateException
(
HttpServletRequest
servlet
,
ValidateException
e
){
String
language
=
servlet
.
getLocale
().
getLanguage
();
//
String language= servlet.getLocale().getLanguage();
// 打印堆栈信息
//log.error(ThrowableUtil.getStackTrace(e));
String
targetMsg
=
messageUtils
.
getText
(
e
.
getMsgKey
(),
e
.
getMsgParam
(),
new
Locale
(
language
)
,
e
.
getDefaultMsg
());
String
targetMsg
=
messageUtils
.
getText
(
e
.
getMsgKey
(),
e
.
getMsgParam
(),
servlet
.
getLocale
(
)
,
e
.
getDefaultMsg
());
return
buildResponseEntity
(
ApiError
.
error
(
e
.
getStatus
(),
targetMsg
));
}
...
...
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
查看文件 @
b5bbc12
...
...
@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.device.bean;
import
com.google.common.base.Strings
;
import
com.neotel.smfcore.core.device.enums.BOX_STATUS
;
import
com.neotel.smfcore.core.system.service.po.AlarmInfo
;
import
lombok.ToString
;
import
java.util.*
;
...
...
@@ -14,6 +15,7 @@ import java.util.*;
3,IO报警,信号超时,io电器定义(电器定义),
4,电钢报警,1=上下电钢,
*/
@ToString
public
class
StatusBean
{
/// <summary>
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
b5bbc12
...
...
@@ -465,23 +465,24 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
protected
StatusBean
handleInOutFinished
(
StatusBean
statusBean
)
{
// Map<Integer, BoxStatusBean> statusOfBoxes = statusBean.getBoxStatus();
// if (statusOfBoxes != null) {
// for (BoxStatusBean boxStatus : statusOfBoxes.values()) {
// try {
// //出库入库完成处理
// int status = boxStatus.getStatus();
// String posName = boxStatus.getPosId();
// if (!Strings.isNullOrEmpty(posName)) {//客户端发一次完成之后,会发空的 posName,不需要处理
// if (BOX_STATUS.IN_FINISHED == status) {//入仓完成
// finishedPutIn(statusBean.getCid(),posName);
// } else if (BOX_STATUS.IN_FAILED == status) {//入库失败
// //暂不处理
// } else if (BOX_STATUS.OUT_FINISHED == status) {//出仓完成
// finishedOutPos(statusBean.getCid(),posName);
// } else if (BOX_STATUS.OUT_END == status) {//出库完成(放到仓门口
// //暂不处理
// } else if (BOX_STATUS.REWARM_TAKING_END == status) {
Map
<
String
,
BoxStatusBean
>
statusOfBoxes
=
statusBean
.
getBoxStatus
();
if
(
statusOfBoxes
!=
null
)
{
for
(
BoxStatusBean
boxStatus
:
statusOfBoxes
.
values
())
{
try
{
//出库入库完成处理
int
status
=
boxStatus
.
getStatus
();
String
posName
=
boxStatus
.
getPosId
();
if
(!
Strings
.
isNullOrEmpty
(
posName
))
{
//客户端发一次完成之后,会发空的 posName,不需要处理
if
(
BOX_STATUS
.
IN_FINISHED
==
status
)
{
//入仓完成
finishedPutIn
(
statusBean
.
getCid
(),
posName
);
}
else
if
(
BOX_STATUS
.
IN_FAILED
==
status
)
{
//入库失败
//暂不处理
}
else
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
finishedOutPos
(
statusBean
.
getCid
(),
posName
);
}
else
if
(
BOX_STATUS
.
OUT_END
==
status
)
{
//出库完成(放到仓门口
//暂不处理
}
// else if (BOX_STATUS.REWARM_TAKING_END == status) {
// //回温取料完成, 将库位清空
// DataLog takingTask = taskService.findExecutingTask(statusBean.getCid(), boxStatus.getPosId());
// if (takingTask == null) {
...
...
@@ -545,12 +546,12 @@ public class BaseDeviceHandler implements IDeviceHandler {
// DataLog mixTask = findExecutingTask(statusBean.getCid(), boxStatus.getPosId());
// mixEnd(mixTask);
// }
//
}
//
} catch (ValidateException e) {
//
log.error("更新状态时出错" + e.getMessage());
//
}
//
}
//
}
}
}
catch
(
ValidateException
e
)
{
log
.
error
(
"更新状态时出错"
+
e
.
getMessage
());
}
}
}
return
statusBean
;
}
...
...
@@ -794,9 +795,8 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
@Override
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
AUTO
;
return
DeviceType
.
DEFAULT
;
}
}
src/main/java/com/neotel/smfcore/core/device/handler/impl/SisoBoxHandler.java
0 → 100644
查看文件 @
b5bbc12
package
com
.
neotel
.
smfcore
.
core
.
device
.
handler
.
impl
;
import
com.neotel.smfcore.core.device.api.IOpAuthApi
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
lombok.ToString
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
@Service
@Slf4j
public
class
SisoBoxHandler
extends
BaseDeviceHandler
{
public
SisoBoxHandler
(
List
<
IOpAuthApi
>
apiList
)
{
super
(
apiList
);
}
@Override
public
StatusBean
handleClientRequest
(
StatusBean
statusBean
,
HttpServletRequest
request
)
{
String
cid
=
statusBean
.
getCid
();
Storage
storage
=
dataCache
.
getStorage
(
cid
);
if
(
storage
==
null
)
{
log
.
error
(
"料仓cid: ["
+
cid
+
"]不存在"
);
return
null
;
}
handleMsg
(
statusBean
);
statusBean
=
saveAlarmAndHumidity
(
statusBean
);
statusBean
=
handleInOutFinished
(
statusBean
);
StatusBean
humidityResult
=
handleHumidity
(
statusBean
);
if
(
humidityResult
!=
null
)
{
return
humidityResult
;
}
if
(
statusBean
.
getOp
()
==
OP
.
PUT_IN
)
{
log
.
debug
(
"入库:"
+
statusBean
.
toString
());
statusBean
=
putInLine
(
storage
,
statusBean
);
}
else
{
//查看是否有要出库的操作
statusBean
=
taskService
.
checkOut
(
storage
,
statusBean
);
}
return
statusBean
;
}
@Override
public
DeviceType
getDeviceType
()
{
return
DeviceType
.
AUTO
;
}
}
src/main/java/com/neotel/smfcore/core/storage/enums/DeviceType.java
查看文件 @
b5bbc12
...
...
@@ -88,8 +88,12 @@ public enum DeviceType {
/**
* 13 SMD-DUO(DUO料仓)
*/
SMD_DUO
(
"storage.type.smdDuo"
)
SMD_DUO
(
"storage.type.smdDuo"
)
,
/**
* 14 (默认料仓)
*/
DEFAULT
(
"storage.type.default"
)
;
private
String
key
;
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
b5bbc12
...
...
@@ -6,7 +6,9 @@ import com.google.common.collect.Maps;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.StorageConstants
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
...
...
@@ -29,6 +31,8 @@ public class TaskService {
@Autowired
protected
IDataLogDao
dataLogDao
;
@Autowired
protected
IBarcodeManager
barcodeManager
;
@Autowired
private
List
<
ITaskListener
>
taskListenerList
=
new
ArrayList
<>();
...
...
@@ -249,5 +253,131 @@ public class TaskService {
}
return
null
;
}
/**
* 是否有正在执行的任务
*
* @return
*/
private
boolean
hasExecutingTask
(
String
cid
,
int
type
)
{
for
(
DataLog
task
:
taskMap
.
values
())
{
if
(
type
==
task
.
getType
()
&&
task
.
getCid
().
equals
(
cid
))
{
return
true
;
}
}
return
false
;
}
/**
* 为 box 分配出库任务
*/
private
DataLog
findCheckoutBoxTask
(
Storage
storage
)
{
String
cid
=
storage
.
getCid
();
int
checkoutSize
=
0
;
Collection
<
DataLog
>
allTasks
=
taskMap
.
values
();
for
(
DataLog
task
:
allTasks
)
{
if
(!
task
.
isCheckOutTask
())
{
continue
;
}
//如果该BOX在已执行任务中已经有入库任务,不再分配直接返回
if
(
cid
.
equals
(
task
.
getCid
())
&&
task
.
isExecuting
())
{
if
(
task
.
isPutInTask
())
{
log
.
error
(
"cid["
+
cid
+
"]已有入库任务,不可再分配出库任务"
);
return
null
;
}
else
if
(
task
.
needReSendToClient
()
&&
task
.
isCheckOutTask
())
{
//超过30秒仍未完成的出库再次发送到客户端
log
.
error
(
"cid["
+
cid
+
"]的出库任务["
+
task
.
getPosName
()
+
"]超过60秒仍未完成,重新发送到客户端!"
);
task
.
setUpdateDate
(
new
Date
());
return
task
;
}
//只能同时有两个正在执行的出库任务,如果超过两个不再分配了
if
(
task
.
isCheckOutTask
())
{
checkoutSize
++;
if
(
checkoutSize
>=
2
)
{
//log.error("cid["+cid + "]的BOX["+ boxId+"]的出库任务已经超过2个,不再分配!");
return
null
;
}
}
}
}
//指定紧急单盘出库的优先出库,否则按批量出库处理
DataLog
singleOutTask
=
null
;
DataLog
outTask
=
null
;
for
(
DataLog
task
:
allTasks
)
{
//优先分配单盘任务和没有工单的任务
if
(
cid
.
equals
(
task
.
getCid
())
&&
task
.
isCheckOutTask
()
&&
task
.
isWait
())
{
String
posName
=
task
.
getPosName
();
if
(!
Strings
.
isNullOrEmpty
(
posName
))
{
//有库位号
if
(
task
.
isSingleOut
())
{
//单盘优先出库
if
(
singleOutTask
==
null
||
task
.
getCreateDate
().
before
(
singleOutTask
.
getCreateDate
()))
{
singleOutTask
=
task
;
}
}
else
{
if
(
outTask
==
null
||
task
.
getCreateDate
().
before
(
outTask
.
getCreateDate
()))
{
outTask
=
task
;
}
}
}
}
}
if
(
singleOutTask
!=
null
)
{
log
.
info
(
"分配优先(单盘或无工单)出库任务"
+
singleOutTask
.
getBarcode
()
+
"["
+
singleOutTask
.
getPosName
()
+
"]到 "
+
cid
);
return
singleOutTask
;
}
return
outTask
;
}
/**
* 出库处理
*/
public
StatusBean
checkOut
(
Storage
storage
,
StatusBean
statusBean
)
{
try
{
String
cid
=
storage
.
getCid
();
//有入库任务的料仓不分配出库任务
if
(!
hasExecutingTask
(
cid
,
OP
.
PUT_IN
))
{
DataLog
task
=
findCheckoutBoxTask
(
storage
);
if
(
task
!=
null
)
{
//从等待列表中删除,加入到执行列表中
log
.
info
(
"分配出库任务"
+
task
.
getBarcode
()
+
"["
+
task
.
getPosName
()
+
"]到 "
+
cid
);
task
.
setStatus
(
OP_STATUS
.
EXECUTING
.
name
());
taskMap
.
put
(
task
.
getId
(),
task
);
task
=
dataLogDao
.
save
(
task
);
statusBean
.
setOp
(
OP
.
CHECKOUT
);
String
posName
=
task
.
getPosName
();
Barcode
codeObj
=
barcodeManager
.
findByBarcode
(
task
.
getBarcode
());
int
plateW
=
0
;
int
plateH
=
0
;
//是否是单盘出库,批量上下料使用
boolean
isSingleOut
=
task
.
isSingleOut
();
if
(
codeObj
!=
null
)
{
plateW
=
codeObj
.
getPlateSize
();
plateH
=
codeObj
.
getHeight
();
if
(
codeObj
.
isOnlySingleOut
())
{
log
.
info
(
codeObj
.
getBarcode
()
+
" 只能单盘出库"
);
isSingleOut
=
true
;
}
}
else
{
log
.
warn
(
"出库无料仓位"
+
storage
.
getName
()
+
"["
+
posName
+
"]"
);
}
statusBean
.
addPosInfo
(
task
.
getBarcode
(),
posName
,
plateW
,
plateH
,
isSingleOut
);
log
.
info
(
"出库"
+
storage
.
getName
()
+
"["
+
posName
+
"]物料["
+
task
.
getBarcode
()
+
"]"
+
isSingleOut
+
"发送到客户端"
+
cid
);
}
}
String
posId
=
statusBean
.
getData
().
get
(
"posId"
);
if
(!
Strings
.
isNullOrEmpty
(
posId
))
{
log
.
info
(
"SEQ:"
+
statusBean
.
getSeq
()
+
"出库库位信息:["
+
posId
+
"]发送到客户端"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"出库出错"
,
e
);
}
return
statusBean
;
}
}
src/main/resources/messages_ja_JP.properties
查看文件 @
b5bbc12
smfcode.valueCanotNull
=
{0}
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
smfcode.feleFormatError
=
\u
6587\u
4EF6
\u
683C
\u
5F0F
\u9519\u
8BEF
\u
FF01,
\u
4EC5
\u
652F
\u6301
{0}
\u
683C
\u
5F0F
smfcode.valueAlreadyExist
=
{0}[{1}]
\u
5DF2
\u
5B58
\u5728
smfcode.valueNotExist
=
{0}[{1}]
\u
4E0D
\u
5B58
\u5728
smfcode.fileToLong
=
\u
6587\u
4EF6
\u
8D85
\u
51FA
\u
89C4
\u
5B9A
\u5927\u
5C0F
smfcode.fileError
=
\u
6587\u
4EF6
\u
89E3
\u6790\u5931\u
8D25
smfcode.valueNotFind
=
\u
672A
\u
627E
\u5230
{0}[{1}]
smfcode.hu
midityValueError
=
\u
6E29
\u
5EA6
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfcode.hu
midityShowValueError
=
\u
6E29
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfcode.temperatureValueError
=
\u
6E7F
\u
5EA6
\u
8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfcode.temperatureShowValueError
=
\u
6E7F
\u
5EA6
\u
663E
\u
793A
\u8303\u
56F4
\u6570\u
636E
\u9519\u
8BEF
smfcode.notActivated
=
\u
8D26
\u
53F7
\u
672A
\u
6FC0
\u
6D3B
smfcode.userInfoError
=
\u
7528\u6237\u
4FE1
\u
606F
\u
4E0D
\u
5B8C
\u6574
smfcode.noaccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u
89D2
\u8272\u7684\u
83DC
\u5355
smfcode.notSelRole
=
\u
8BF7
\u8981\u
4FEE
\u6539\u7684\u9009\u
62E9
\u
89D2
\u8272
smfcode.posIsused
=
\u
6599\u
4ED3[{0}]
\u7684\u
5E93
\u
4F4D[{1}}]
\u6709\u6599
[{2}],
\u5220\u9664\u5931\u
8D25
smfcode.thePosIsused
=
\u
5E93
\u
4F4D[{0}]
\u6709\u6599
[{1}],
\u
4E0D
\u
80FD
\u5220\u966
4
smfcode.groupWithStorage
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u
8BBE
\u5907\u5173\u8054
smfcode.groupWithUser
=
\u
7EC4[{0}]
\u
5DF2
\u
548C
\u7528\u6237\u5173\u8054
smfcode.canotDelSelf
=
\u
5220\u9664\u7528\u6237\u
FF1A
\u
4E0D
\u
80FD
\u5220\u9664\u
81EA
\u
5DF1
smfcode.canotDelUser
=
\u
5220\u9664\u7528\u6237\u
FF1A
\u
6B64
\u7528\u6237\u
4E0D
\u
80FD
\u5220\u9664
smfcode.oldPwdError
=
\u
4FEE
\u6539\u5931\u
8D25
\u
FF0C
\u
65E7
\u
5BC6
\u7801\u9519\u
8BEF
smfcode.newPwdError
=
\u
65B0
\u
5BC6
\u7801\u
4E0D
\u
80FD
\u
4E0E
\u
65E7
\u
5BC6
\u7801\u
76F8
\u
540C
smfcode.pwdError
=
\u
4FEE
\u6539\u
90AE
\u
7BB1
\u5931\u
8D25
\u
FF0C
\u
5BC6
\u7801\u9519\u
8BEF
smfcode.hasNoAccess
=
\u
65E0
\u6743\u9650\u
4FEE
\u6539\u
6B64
\u7528\u6237\u
4FE1
\u
606F
smfcode.noAccessUpdate
=
\u
6CA1
\u6709\u5220\u9664\u
83DC
\u5355\u7684\u6743\u9650
smfcode.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
5E
93
smfcore.error.barcode.expired
=
\u
7269\u6599\u
5DF2
\u
8FC7
\u
671F,
\u
65E0
\u
6CD5
\u5165\u
5E93.
smfcore.allBoxView.noReel
=
\u
5E93
\u
4F4D
\u
4E2D
\u
65E0
\u7269\u6599
smfcode.error.barcode.many
=
\u
627E
\u5230\u
591A
\u
4E2A
\u6709\u6548\u7684\u6761\u7801
smfcode.error.barcode.noValidCode
=
\u
65E0
\u6548\u7684\u6761\u7801
smfcore.error.barcode.noValidCode
=
{0}
\u
4E0D
\u
662F
\u6709\u6548\u7684\u6761\u7801
smfcode.error.barcode.executing
=
\u
6761\u7801
[{0}}]
\u
4EFB
\u
52A1
\u
6B63
\u5728\u6267\u
884C
smfcode.error.pos.notExist
=
\u
5E93
\u
4F4D[{0}]
\u
4E0D
\u
5B58
\u5728
,
\u
65E0
\u
6CD5
\u5165\u
5E
93
smfcode.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
5E
93
smfcode.error.pos.hasReel
=
\u
5E93
\u
4F4D[{0}]
\u
4E2D
\u
5DF2
\u6709\u7269\u6599
,
\u
65E0
\u
6CD5
\u5165\u
5E
93
smfcode.error.pos.sizeNotMatch
=
\u
6599\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
5E
93
smfcode.error.storage.offline
=
\u
6599\u
4ED3[{0}]
\u
79BB
\u
7EBF
smfcode.error.barcode.invalid
=
\u
6761\u7801\u
65E0
\u6548
smfcode.error.barcode.wrongSize
=
\u
5C3A
\u
5BF8[{0}]
\u
4E0D
\u
7B26
smfcode.error.barcode.wrongQty
=
\u6761\u7801
[{0}]
\u
5BF9
\u
5E94
\u7684\u6570\u
91CF<=0
\u
4E3A: {1}
smfcode.error.barcode.taskNotEnd
=
\u
6599\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
smfcode.error.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfcore.storage.error.notExist
=
\u
672A
\u
627E
\u5230\u6599\u
4ED3
{0}
smfcode.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
smfcode.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
smfcode.columnNotExist
=
\u
5FC5
\u
987B
\u5305\u
542B[{0}
\u5217
smfcore.conotUpdate
=
\u
7528\u6237\u
540Dadmin
\u
4E0D
\u
80FD
\u
4FEE
\u6539
smfcore.unfinished
=
\u
6761\u7801
[{0}]
\u7684\u
4EFB
\u
52A1
\u
8FD8
\u
672A
\u
7ED3
\u
675F
smfcode.valueCanotNull
=
{0}
\u
306F
\u
7A7A
\u3067\u
306F
\u
306A
\u3044
smfcode.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
smfcode.valueAlreadyExist
=
{0}[{1}]
\u
65E2
\u
306B
\u
5B58
\u5728\u3059\u
308B
smfcode.valueNotExist
=
{0}[{1}]
\u
304C
\u
5B58
\u5728\u3057\u
307E
\u
305B
\u3093
smfcode.fileToLong
=
\u
30D5
\u
30A1
\u
30A4
\u
30EB
\u
8D85
\u
904E
\u
30B5
\u
30A4
\u
30BA
smfcode.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
smfcode.valueNotFind
=
\u
898B
\u3064\u
304B
\u
308A
\u
307E
\u
305B
\u3093\u3067\u3057\u
305F
{0}[{1}]
smfcode.hu
didityValueError
=
\u
6E29
\u
5EA6
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfcode.hu
didityShowValueError
=
\u
6E29
\u
5EA6
\u8868\u
793A
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfcode.temperatureValueError
=
\u
6E7F
\u
5EA6
\u
7BC4
\u
56F2
\u
30C7
\u
30FC
\u
30BF
\u
30A8
\u
30E9
\u
30FC
smfcode.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
smfcode.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
smfcode.userInfoError
=
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
60C5
\u5831\u
306E
\u
4E0D
\u5099
smfcode.noaccess
=
\u
3053\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
smfcode.notSelRole
=
\u
5909\u
66F4
\u3059\u
308B
\u
5F79
\u5272\u3092\u9078\u
629E
\u3057\u3066\u
304F
\u3060\u3055\u3044
smfcode.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
smfcode.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
\u304
4
smfcode.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
smfcode.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
smfcode.canotDelSelf
=
\u
81EA
\u5206\u3092\u
524A
\u9664\u3067\u
304D
\u
306A
\u3044
smfcode.canotDelUser
=
\u
3053\u
306E
\u
30E6
\u
30FC
\u
30B6
\u
30FC
\u
306F
\u
524A
\u9664\u3067\u
304D
\u
307E
\u
305B
\u3093
smfcode.oldPwdError
=
\u
5909\u
66F4
\u5931\u6557\u3001\u
53E4
\u3044\u
30D1
\u
30B9
\u
30EF
\u
30FC
\u
30C9
\u
30A8
\u
30E9
\u
30FC
smfcode.newPwdError
=
\u
65B0
\u
3057\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
smfcode.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
smfcode.hasNoAccess
=
\u
3053\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
smfcode.noAccessUpdate
=
\u
30E1
\u
30CB
\u
30E5
\u
30FC
\u3092\u
524A
\u9664\u3059\u
308B
\u
6A29
\u9650\u
304C
\u
306A
\u3044
smfcode.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
=
\u
8907\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
\u30
93
smfcore.error.barcode.expired
=
\u
6750\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
smfcode.error.barcode.many
=
\u
8907\u6570\u
306E
\u6709\u
52B9
\u
306A
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
306E
\u
691C
\u
7D22
smfcode.error.barcode.noValidCode
=
\u
7121\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
smfcode.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
smfcode.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
\u30
93
smfcode.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
\u30
93
smfcode.error.pos.hasReel
=
\u
6750\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
\u30
93
smfcode.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
\u30
93
smfcode.error.storage.offline
=
\u
30D3
\u
30F3 [{0}]
\u
30AA
\u
30D5
\u
30E9
\u
30A4
\u
30F3
smfcode.error.barcode.invalid
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
\u
304C
\u7121\u
52B9
\u3067\u3059
smfcode.error.barcode.wrongSize
=
\u
30B5
\u
30A4
\u
30BA[{0}]
\u
304C
\u
4E00
\u
81F4
\u3057\u
306A
\u3044
smfcode.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
smfcode.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
smfcode.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}
smfcode.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
smfcode.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
smfcode.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
smfcore.shelfNotExist
=
{0}
\u
5BF9
\u
5E94
\u7684\u6599\u
67B6
\u
4E0D
\u
5B58
\u5728
smfcore.inputError
=
\u5165\u
5E93
\u
51FA
\u9519
:{0}
smfcore.checkoutError
=
\u
51FA
\u
5E93
\u
51FA
\u9519
:{0}
smfcore.notask
=
No task in this order
smfcore.taskCount
=
total task is :{0}
smfcore.noconnecttion
=
no connecttion
smfcore.loadMaterialFailed
=
loading material failed:{0}
smfcore.checkNg
=
checking material is ng:{0}
smfcore.loadMaterialFinished
=
loading material is finished: {0}
smfcore.shelfNotExist
=
{0}
\u
5BFE
\u
5FDC
\u3059\u
308B
\u
68DA
\u
304C
\u
5B58
\u5728\u3057\u
306A
\u3044
smfcore.inputError
=
\u
30A8
\u
30F3
\u
30C8
\u
30EA
\u
30A8
\u
30E9
\u
30FC
\u
FF1A{0}
smfcore.checkoutError
=
\u
30A2
\u
30A6
\u
30C8
\u
30D0
\u
30A6
\u
30F3
\u
30C9
\u
30A8
\u
30E9
\u
30FC
\u
FF1A{0}
smfcore.notask
=
\u5272\u
308A
\u
5F53
\u3066\u
306E
\u
306A
\u3044\u
6CE8
\u6587
smfcore.taskCount
=
\u
30BF
\u
30B9
\u
30AF
\u
306E
\u
7DCF
\u6570
:{0}
smfcore.noconnecttion
=
\u
672A
\u
63A5
\u
7D9A
smfcore.loadMaterialFailed
=
\u
30C7
\u
30D0
\u
30A4
\u
30B9
\u
306E
\u
8AAD
\u
307F
\u
8FBC
\u
307F
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F:{0}
smfcore.checkNg
=
\u
30C7
\u
30D0
\u
30A4
\u
30B9
\u
306E
\u
8A8D
\u
8A3C
\u
306B
\u5931\u6557\u3057\u
307E
\u3057\u
305F:{0}
smfcore.loadMaterialFinished
=
\u
30C7
\u
30D0
\u
30A4
\u
30B9
\u
306E
\u
8AAD
\u
307F
\u
8FBC
\u
307F
\u
5B8C
\u
4E86
\u
FF1A{0}
smfcore.lockMaterial
=
\u
30ED
\u
30C3
\u
30AD
\u
30F3
\u
30B0
\u
7D20
\u6750
smfcore.lightGroup
=
\u
30E9
\u
30C3
\u
30AF
\u
306E
\u
30B0
\u
30EB
\u
30FC
\u
30D4
\u
30F3
\u
30B0
smfcore.order
=
\u
4F5C
\u
696D
\u6307\u
793A
\u
7BA1
\u7406
smfcore.workOrder
=
\u
4F5C
\u
696D
\u6307\u
793A
smfcore.singleOuput
=
\u
8ABF
\u3079\u
308B
smfcore.system
=
\u
8A2D
\u
5B9A
smfcore.bunker
=
\u
30B5
\u
30A4
\u
30ED
\u
7BA1
\u7406
smfcore.storagePos
=
\u
30B9
\u
30C8
\u
30EC
\u
30FC
\u
30B8
\u
7BA1
\u7406
smfcore.menu
=
\u
30E1
\u
30CB
\u
30E5
\u
30FC
\u
7BA1
\u7406
smfcore.materiel
=
\u
30DE
\u
30C6
\u
30EA
\u
30A2
\u
30EB
\u
30DE
\u
30CD
\u
30B8
\u
30E1
\u
30F3
\u
30C8
smfcore.componentParts
=
\u
30B3
\u
30F3
\u
30DD
\u
30FC
\u
30CD
\u
30F3
\u
30C8
smfcore.barcode
=
\u
30D0
\u
30FC
\u
30B3
\u
30FC
\u
30C9
smfcore.log
=
\u
30ED
\u
30B0
\u
7BA1
\u7406
smfcore.taskLog
=
\u
30DE
\u
30C6
\u
30EA
\u
30A2
\u
30EB
\u
30ED
\u
30B0
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
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论