Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit d3ed66f7
由
LN
编写于
2024-08-22 11:19:53 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
重试需要从API010预扣开始重试。所有接口失败增加提示
1 个父辈
7f15d5b8
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
379 行增加
和
272 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.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/core/order/LiteOrderCache.java
查看文件 @
d3ed66f
...
@@ -92,11 +92,12 @@ public class LiteOrderCache {
...
@@ -92,11 +92,12 @@ public class LiteOrderCache {
}
}
}
}
}
}
public
void
addOrderToMap
(
LiteOrder
order
){
if
(
order
==
null
||
order
.
getOrderNo
()==
null
){
public
void
addOrderToMap
(
LiteOrder
order
)
{
if
(
order
==
null
||
order
.
getOrderNo
()
==
null
)
{
return
;
return
;
}
}
if
(
liteOrderMap
.
containsKey
(
order
.
getOrderNo
()))
{
if
(
liteOrderMap
.
containsKey
(
order
.
getOrderNo
()))
{
liteOrderMap
.
remove
(
order
.
getOrderNo
());
liteOrderMap
.
remove
(
order
.
getOrderNo
());
}
}
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
...
@@ -116,19 +117,19 @@ public class LiteOrderCache {
...
@@ -116,19 +117,19 @@ public class LiteOrderCache {
private
boolean
isProcessTimer
=
false
;
private
boolean
isProcessTimer
=
false
;
public
void
runTimer
(){
public
void
runTimer
()
{
if
(!
isProcessTimer
)
{
if
(!
isProcessTimer
)
{
isProcessTimer
=
true
;
isProcessTimer
=
true
;
try
{
try
{
boolean
startJob
=
dataCache
.
getCache
(
Constants
.
CACHE_StartJob
);
boolean
startJob
=
dataCache
.
getCache
(
Constants
.
CACHE_StartJob
);
if
(
startJob
)
{
if
(
startJob
)
{
//定时执行工单任务
//定时执行工单任务
executeOrderTask
();
executeOrderTask
();
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"需求单定时器执行出错:"
,
e
);
log
.
error
(
"需求单定时器执行出错:"
,
e
);
}
finally
{
}
finally
{
isProcessTimer
=
false
;
isProcessTimer
=
false
;
}
}
}
}
...
@@ -145,22 +146,22 @@ public class LiteOrderCache {
...
@@ -145,22 +146,22 @@ public class LiteOrderCache {
}
}
}
}
public
void
executeOrderTask
(){
public
void
executeOrderTask
()
{
for
(
LiteOrder
order
:
liteOrderMap
.
values
())
{
for
(
LiteOrder
order
:
liteOrderMap
.
values
())
{
if
(
order
.
isClosed
())
{
if
(
order
.
isClosed
())
{
continue
;
continue
;
}
}
if
(
order
.
isNew
()||
order
.
isTaskFinished
())
{
if
(
order
.
isNew
()
||
order
.
isTaskFinished
())
{
//判断是否到达时间
//判断是否到达时间
Date
curr
=
new
Date
();
Date
curr
=
new
Date
();
if
(
order
.
getSDate
().
before
(
curr
))
{
if
(
order
.
getSDate
().
before
(
curr
))
{
//开始自动出库
//开始自动出库
String
result
=
checkOutLiteOrder
(
order
.
getOrderNo
(),
false
);
String
result
=
checkOutLiteOrder
(
order
.
getOrderNo
(),
false
);
if
(!
ObjectUtil
.
isEmpty
(
result
))
{
if
(!
ObjectUtil
.
isEmpty
(
result
))
{
String
msg
=
MessageUtils
.
getText
(
result
,
MessageUtils
.
getDefaultLocal
(),
""
);
String
msg
=
MessageUtils
.
getText
(
result
,
MessageUtils
.
getDefaultLocal
(),
""
);
log
.
info
(
"自动执行工单 【"
+
order
.
getOrderNo
()+
"】 失败:"
+
msg
);
log
.
info
(
"自动执行工单 【"
+
order
.
getOrderNo
()
+
"】 失败:"
+
msg
);
}
else
{
}
else
{
log
.
info
(
"自动执行工单 【"
+
order
.
getOrderNo
()+
"】 成功"
);
log
.
info
(
"自动执行工单 【"
+
order
.
getOrderNo
()
+
"】 成功"
);
}
}
break
;
break
;
...
@@ -175,18 +176,18 @@ public class LiteOrderCache {
...
@@ -175,18 +176,18 @@ public class LiteOrderCache {
ORDER_COLOR
nextColor
=
getNextColor
();
ORDER_COLOR
nextColor
=
getNextColor
();
if
(
nextColor
==
null
)
{
if
(
nextColor
==
null
)
{
log
.
info
(
"执行工单["
+
liteOrder
.
getOrderNo
()
+
"] 时,已达最大可执行工单数"
);
log
.
info
(
"执行工单["
+
liteOrder
.
getOrderNo
()
+
"] 时,已达最大可执行工单数"
);
throw
new
ValidateException
(
"order.out.maxOrder"
,
"已达最大可执行工单数"
);
throw
new
ValidateException
(
"order.out.maxOrder"
,
"已达最大可执行工单数"
);
}
}
//其他出库模式一次性全部生成任务
//其他出库模式一次性全部生成任务
List
<
StoragePos
>
lockPosList
=
storagePosManager
.
findLockPos
(
liteOrder
.
getOrderNo
());
List
<
StoragePos
>
lockPosList
=
storagePosManager
.
findLockPos
(
liteOrder
.
getOrderNo
());
if
(
lockPosList
==
null
)
{
if
(
lockPosList
==
null
)
{
throw
new
ValidateException
(
"smfcore.notFindPos"
,
"未找到锁定库位"
);
throw
new
ValidateException
(
"smfcore.notFindPos"
,
"未找到锁定库位"
);
}
}
int
taskReelCount
=
0
;
int
taskReelCount
=
0
;
for
(
StoragePos
lockPos
:
lockPosList
)
{
for
(
StoragePos
lockPos
:
lockPosList
)
{
Storage
storage
=
dataCache
.
getStorageById
(
lockPos
.
getStorageId
());
Storage
storage
=
dataCache
.
getStorageById
(
lockPos
.
getStorageId
());
Barcode
barcode
=
lockPos
.
getBarcode
();
Barcode
barcode
=
lockPos
.
getBarcode
();
DataLog
task
=
new
DataLog
(
storage
,
barcode
,
lockPos
);
DataLog
task
=
new
DataLog
(
storage
,
barcode
,
lockPos
);
task
.
setSourceId
(
liteOrder
.
getId
());
task
.
setSourceId
(
liteOrder
.
getId
());
task
.
setSourceName
(
liteOrder
.
getOrderNo
());
task
.
setSourceName
(
liteOrder
.
getOrderNo
());
...
@@ -203,7 +204,7 @@ public class LiteOrderCache {
...
@@ -203,7 +204,7 @@ public class LiteOrderCache {
}
}
liteOrder
.
setTaskReelCount
(
taskReelCount
);
liteOrder
.
setTaskReelCount
(
taskReelCount
);
liteOrder
.
setTotalTaskReelCount
(
liteOrder
.
getTotalTaskReelCount
()
+
taskReelCount
);
liteOrder
.
setTotalTaskReelCount
(
liteOrder
.
getTotalTaskReelCount
()
+
taskReelCount
);
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
log
.
info
(
"工单["
+
liteOrder
.
getOrderNo
()
+
"]任务分配结束,任务数["
+
taskReelCount
+
"]"
);
log
.
info
(
"工单["
+
liteOrder
.
getOrderNo
()
+
"]任务分配结束,任务数["
+
taskReelCount
+
"]"
);
smfApi
.
onOrderStatusChange
(
liteOrder
);
smfApi
.
onOrderStatusChange
(
liteOrder
);
...
@@ -211,28 +212,28 @@ public class LiteOrderCache {
...
@@ -211,28 +212,28 @@ public class LiteOrderCache {
if
(
taskReelCount
<=
0
)
{
if
(
taskReelCount
<=
0
)
{
//没有任务,直接结束
//没有任务,直接结束
finishedOrderTasks
(
liteOrder
);
finishedOrderTasks
(
liteOrder
);
}
else
{
}
else
{
//有需要出库的 ,更新状态
//有需要出库的 ,更新状态
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
}
}
liteOrder
=
liteOrderManager
.
save
(
liteOrder
);
liteOrder
=
liteOrderManager
.
save
(
liteOrder
);
liteOrderMap
.
put
(
liteOrder
.
getOrderNo
(),
liteOrder
);
liteOrderMap
.
put
(
liteOrder
.
getOrderNo
(),
liteOrder
);
if
(
taskReelCount
<=
0
)
{
if
(
taskReelCount
<=
0
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.notask"
,
"No task in this order"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.notask"
,
"No task in this order"
);
}
}
return
ResultBean
.
newOkResult
(
"smfcore.taskCount"
,
"total task is :{0}"
,
new
String
[]{
taskReelCount
+
""
},
""
);
return
ResultBean
.
newOkResult
(
"smfcore.taskCount"
,
"total task is :{0}"
,
new
String
[]{
taskReelCount
+
""
},
""
);
}
}
/**
/**
* 结束当前的任务
* 结束当前的任务
*/
*/
public
void
finishedOrderTasks
(
LiteOrder
liteOrder
){
public
void
finishedOrderTasks
(
LiteOrder
liteOrder
)
{
if
(
liteOrder
.
isOutOne
())
{
if
(
liteOrder
.
isOutOne
())
{
// setStatus(LITEORDER_STATUS.ONE_FINISHED);
// setStatus(LITEORDER_STATUS.ONE_FINISHED);
liteOrder
.
setClosed
(
true
);
liteOrder
.
setClosed
(
true
);
}
else
if
(
liteOrder
.
isOutBom
())
{
}
else
if
(
liteOrder
.
isOutBom
())
{
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
BOM_FINISHED
);
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
BOM_FINISHED
);
}
else
if
(
liteOrder
.
isOutTails
())
{
}
else
if
(
liteOrder
.
isOutTails
())
{
// setStatus(LITEORDER_STATUS.TAILS_FINISHED);
// setStatus(LITEORDER_STATUS.TAILS_FINISHED);
liteOrder
.
setClosed
(
true
);
liteOrder
.
setClosed
(
true
);
}
}
...
@@ -241,12 +242,12 @@ public class LiteOrderCache {
...
@@ -241,12 +242,12 @@ public class LiteOrderCache {
smfApi
.
onOrderStatusChange
(
liteOrder
);
smfApi
.
onOrderStatusChange
(
liteOrder
);
}
}
public
LiteOrder
getLiteOrder
(
String
orderNo
){
public
LiteOrder
getLiteOrder
(
String
orderNo
)
{
LiteOrder
order
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
order
=
liteOrderMap
.
get
(
orderNo
);
if
(
order
==
null
)
{
if
(
order
==
null
)
{
log
.
info
(
"缓存中未找到["
+
orderNo
+
"],从数据库中重新加载"
);
log
.
info
(
"缓存中未找到["
+
orderNo
+
"],从数据库中重新加载"
);
order
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
order
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
order
!=
null
)
{
if
(
order
!=
null
)
{
List
<
LiteOrderItem
>
items
=
liteOrderItemManager
.
findOrderItems
(
order
.
getId
());
List
<
LiteOrderItem
>
items
=
liteOrderItemManager
.
findOrderItems
(
order
.
getId
());
order
.
setOrderItems
(
items
);
order
.
setOrderItems
(
items
);
}
}
...
@@ -283,13 +284,12 @@ public class LiteOrderCache {
...
@@ -283,13 +284,12 @@ public class LiteOrderCache {
liteOrderMap
.
put
(
orderNo
,
order
);
liteOrderMap
.
put
(
orderNo
,
order
);
//如果是preTask,不需要重新出库
//如果是preTask,不需要重新出库
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
()))
{
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
()))
{
checkoutAgain
(
task
,
order
);
checkoutAgain
(
task
,
order
);
}
}
}
}
else
if
(
task
.
isFinished
())
{
else
if
(
task
.
isFinished
())
{
order
.
setFinishedReelCount
(
order
.
getFinishedReelCount
()
+
1
);
order
.
setFinishedReelCount
(
order
.
getFinishedReelCount
()
+
1
);
order
.
setTotalFinishedReelCount
(
order
.
getTotalFinishedReelCount
()
+
1
);
order
.
setTotalFinishedReelCount
(
order
.
getTotalFinishedReelCount
()
+
1
);
String
orderItemId
=
task
.
getSubSourceId
();
String
orderItemId
=
task
.
getSubSourceId
();
List
<
LiteOrderItem
>
items
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
items
=
new
ArrayList
<>();
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
...
@@ -298,8 +298,8 @@ public class LiteOrderCache {
...
@@ -298,8 +298,8 @@ public class LiteOrderCache {
//更新对应条目的已出库数量和出库盘数
//更新对应条目的已出库数量和出库盘数
liteOrderItem
.
setOutNum
(
liteOrderItem
.
getOutNum
()
+
task
.
getNum
());
liteOrderItem
.
setOutNum
(
liteOrderItem
.
getOutNum
()
+
task
.
getNum
());
liteOrderItem
.
setOutReelCount
(
liteOrderItem
.
getOutReelCount
()
+
1
);
liteOrderItem
.
setOutReelCount
(
liteOrderItem
.
getOutReelCount
()
+
1
);
liteOrderItem
.
setTotalOutNum
(
liteOrderItem
.
getTotalOutNum
()
+
task
.
getNum
());
liteOrderItem
.
setTotalOutNum
(
liteOrderItem
.
getTotalOutNum
()
+
task
.
getNum
());
liteOrderItem
.
setTotalOutReelCount
(
liteOrderItem
.
getTotalOutReelCount
()
+
1
);
liteOrderItem
.
setTotalOutReelCount
(
liteOrderItem
.
getTotalOutReelCount
()
+
1
);
liteOrderItem
.
setStatus
(
task
.
getStatus
());
liteOrderItem
.
setStatus
(
task
.
getStatus
());
liteOrderItem
.
setLocInfo
(
task
.
getLocInfo
());
liteOrderItem
.
setLocInfo
(
task
.
getLocInfo
());
liteOrderItem
.
setStatus
(
OrderItemStatus
.
finish
);
liteOrderItem
.
setStatus
(
OrderItemStatus
.
finish
);
...
@@ -332,37 +332,36 @@ public class LiteOrderCache {
...
@@ -332,37 +332,36 @@ public class LiteOrderCache {
//判断位置信息是否以"-"开头,如果是,则获取相同位置的orderItemId,进行通知
//判断位置信息是否以"-"开头,如果是,则获取相同位置的orderItemId,进行通知
// if (StringUtils.isNotBlank(task.getLocInfo()) && task.getLocInfo().startsWith("-")) {
// if (StringUtils.isNotBlank(task.getLocInfo()) && task.getLocInfo().startsWith("-")) {
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
())&&
StringUtils
.
isNotBlank
(
task
.
getLocInfo
())
)
{
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
())
&&
StringUtils
.
isNotBlank
(
task
.
getLocInfo
())
)
{
String
locInfo
=
task
.
getLocInfo
();
String
locInfo
=
task
.
getLocInfo
();
List
<
String
>
itemIdList
=
new
ArrayList
<>();
List
<
String
>
itemIdList
=
new
ArrayList
<>();
itemIdList
.
add
(
task
.
getSubSourceId
());
itemIdList
.
add
(
task
.
getSubSourceId
());
// for (LiteOrderItem item : items) {
// for (LiteOrderItem item : items) {
// if (locInfo.contains(item.getLocInfo())) {
// if (locInfo.contains(item.getLocInfo())) {
// itemIdList.add(item.getId());
// itemIdList.add(item.getId());
// }
// }
// }
// }
//先改为单盘上传
//先改为单盘上传
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
in
(
itemIdList
)));
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
in
(
itemIdList
)));
if
(
dataLogList
!=
null
&&
!
dataLogList
.
isEmpty
())
{
if
(
dataLogList
!=
null
&&
!
dataLogList
.
isEmpty
())
{
String
msg
=
MicronApi
.
Api007
(
order
.
getOrderNo
(),
task
.
getLocInfo
(),
dataLogList
);
String
msg
=
MicronApi
.
Api007
(
order
.
getOrderNo
(),
task
.
getLocInfo
(),
dataLogList
);
for
(
LiteOrderItem
item
:
items
)
{
for
(
LiteOrderItem
item
:
items
)
{
if
(
itemIdList
.
contains
(
item
.
getId
()))
{
if
(
itemIdList
.
contains
(
item
.
getId
()))
{
if
(
ObjectUtil
.
isEmpty
(
msg
))
{
if
(
ObjectUtil
.
isEmpty
(
msg
))
{
item
.
setStatus
(
OrderItemStatus
.
notify_success
);
item
.
setStatus
(
OrderItemStatus
.
notify_success
);
}
else
{
}
else
{
item
.
setExecutFailReason
(
msg
);
item
.
setExecutFailReason
(
msg
);
item
.
setStatus
(
OrderItemStatus
.
notify_fail
);
item
.
setStatus
(
OrderItemStatus
.
notify_fail
);
item
.
setExecutFailReason
(
msg
);
item
.
setExecutFailReason
(
msg
);
}
}
}
liteOrderItemManager
.
save
(
item
);
}
}
order
.
setOrderItems
(
items
);
liteOrderItemManager
.
save
(
item
);
}
}
order
.
setOrderItems
(
items
);
}
}
}
if
(!
order
.
isClosed
())
{
if
(!
order
.
isClosed
())
{
...
@@ -382,19 +381,19 @@ public class LiteOrderCache {
...
@@ -382,19 +381,19 @@ public class LiteOrderCache {
}
}
}
}
//判断是否发送成功
//判断是否发送成功
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
()))
{
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
()))
{
if
(
liteOrderItem
.
getStatus
()==
OrderItemStatus
.
notify_fail
)
{
if
(
liteOrderItem
.
getStatus
()
==
OrderItemStatus
.
notify_fail
)
{
closed
=
false
;
closed
=
false
;
break
;
break
;
}
}
}
}
}
}
if
(
closed
)
{
if
(
closed
)
{
order
.
setClosed
(
closed
);
order
.
setClosed
(
closed
);
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
()))
{
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
()))
{
String
key
=
Constants
.
CACHE_DISPATCH
+
order
.
getMode
();
String
key
=
Constants
.
CACHE_DISPATCH
+
order
.
getMode
();
log
.
info
(
" mode="
+
order
.
getMode
()+
"的出库已结束,清空 key="
+
key
+
" 的cache"
);
log
.
info
(
" mode="
+
order
.
getMode
()
+
"的出库已结束,清空 key="
+
key
+
" 的cache"
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
}
}
}
}
}
}
...
@@ -415,10 +414,10 @@ public class LiteOrderCache {
...
@@ -415,10 +414,10 @@ public class LiteOrderCache {
}
}
}
}
private
LiteOrder
checkoutAgain
(
DataLog
task
,
LiteOrder
order
)
{
private
LiteOrder
checkoutAgain
(
DataLog
task
,
LiteOrder
order
)
{
try
{
try
{
//出库任务,如果是工单任务,如果此料仓离线,需要补发一盘
//出库任务,如果是工单任务,如果此料仓离线,需要补发一盘
if
(
ObjectUtil
.
isNotEmpty
(
task
.
getSourceId
()))
{
if
(
ObjectUtil
.
isNotEmpty
(
task
.
getSourceId
()))
{
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
task
.
getCid
());
StatusBean
bean
=
DevicesStatusUtil
.
getStatusBean
(
task
.
getCid
());
if
(
bean
!=
null
&&
(!
bean
.
timeOut
()))
{
if
(
bean
!=
null
&&
(!
bean
.
timeOut
()))
{
//如果当前料仓在线,不处理
//如果当前料仓在线,不处理
...
@@ -431,7 +430,7 @@ public class LiteOrderCache {
...
@@ -431,7 +430,7 @@ public class LiteOrderCache {
return
order
;
return
order
;
}
}
if
(
order
.
isClosed
()
||
order
.
isTaskFinished
())
{
if
(
order
.
isClosed
()
||
order
.
isTaskFinished
())
{
return
order
;
return
order
;
}
}
for
(
LiteOrderItem
item
:
for
(
LiteOrderItem
item
:
...
@@ -469,28 +468,28 @@ public class LiteOrderCache {
...
@@ -469,28 +468,28 @@ public class LiteOrderCache {
}
}
log
.
info
(
"工单["
+
orderNo
+
"]任务["
+
task
.
getPosName
()
+
"]取消,补发结束,任务数["
+
order
.
getTaskReelCount
()
+
"]"
);
log
.
info
(
"工单["
+
orderNo
+
"]任务["
+
task
.
getPosName
()+
"]取消,补发结束,任务数["
+
order
.
getTaskReelCount
()
+
"]"
);
liteOrderManager
.
save
(
order
);
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
liteOrderMap
.
put
(
order
.
getOrderNo
(),
order
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
log
.
error
(
"任务["
+
task
.
getPosName
()+
"]["
+
task
.
getPartNumber
()+
"]["
+
task
.
getBarcode
()+
"]取消时,对应工单["
+
task
.
getSourceId
()+
"]["
+
task
.
getSourceName
()+
"]补发任务出错:"
+
ex
.
getMessage
());
log
.
error
(
"任务["
+
task
.
getPosName
()
+
"]["
+
task
.
getPartNumber
()
+
"]["
+
task
.
getBarcode
()
+
"]取消时,对应工单["
+
task
.
getSourceId
()
+
"]["
+
task
.
getSourceName
()
+
"]补发任务出错:"
+
ex
.
getMessage
());
}
}
return
order
;
return
order
;
}
}
public
ORDER_COLOR
getNextColor
()
{
public
ORDER_COLOR
getNextColor
()
{
//设置颜色
//设置颜色
Set
<
String
>
currentColors
=
new
HashSet
<>();
Set
<
String
>
currentColors
=
new
HashSet
<>();
// for (DataLog dataLog :taskService. getQueueTasks()) {
// for (DataLog dataLog :taskService. getQueueTasks()) {
// currentColors.add(dataLog.getLightColor());
// currentColors.add(dataLog.getLightColor());
// }
// }
for
(
DataLog
dataLog
:
taskService
.
getAllTasks
())
{
for
(
DataLog
dataLog
:
taskService
.
getAllTasks
())
{
if
(
dataLog
.
isFinished
()||
dataLog
.
isCancel
()||
dataLog
.
isEnd
())
{
if
(
dataLog
.
isFinished
()
||
dataLog
.
isCancel
()
||
dataLog
.
isEnd
())
{
continue
;
continue
;
}
}
if
(
dataLog
.
isCheckOutTask
()
&&
ObjectUtil
.
isNotEmpty
(
dataLog
.
getSourceId
())&&
ObjectUtil
.
isNotEmpty
(
dataLog
.
getLightColor
()))
{
if
(
dataLog
.
isCheckOutTask
()
&&
ObjectUtil
.
isNotEmpty
(
dataLog
.
getSourceId
())
&&
ObjectUtil
.
isNotEmpty
(
dataLog
.
getLightColor
()))
{
currentColors
.
add
(
dataLog
.
getLightColor
());
currentColors
.
add
(
dataLog
.
getLightColor
());
}
}
}
}
...
@@ -501,14 +500,15 @@ public class LiteOrderCache {
...
@@ -501,14 +500,15 @@ public class LiteOrderCache {
/**
/**
* 执行工单出库,批量料仓默认出库到料串上
* 执行工单出库,批量料仓默认出库到料串上
*/
*/
public
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
){
public
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
)
{
boolean
singleOut
=
false
;
boolean
singleOut
=
false
;
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
);
return
checkOutLiteOrder
(
orderNo
,
outBom
,
singleOut
);
}
}
/**
/**
* 执行工单出库
* 执行工单出库
*/
*/
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
,
boolean
singleOut
)
{
public
synchronized
String
checkOutLiteOrder
(
String
orderNo
,
boolean
outBom
,
boolean
singleOut
)
{
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
)
{
if
(
cacheOrder
==
null
)
{
...
@@ -519,17 +519,16 @@ public class LiteOrderCache {
...
@@ -519,17 +519,16 @@ public class LiteOrderCache {
return
"smfcore.order.out.notFound"
;
return
"smfcore.order.out.notFound"
;
}
}
if
(
!
cacheOrder
.
isTaskFinished
()
&&
!
cacheOrder
.
isNew
())
{
if
(!
cacheOrder
.
isTaskFinished
()
&&
!
cacheOrder
.
isNew
())
{
log
.
info
(
"工单["
+
orderNo
+
"]正在执行"
);
log
.
info
(
"工单["
+
orderNo
+
"]正在执行"
);
return
"smfcore.order.out.executing"
;
return
"smfcore.order.out.executing"
;
}
}
if
(
cacheOrder
.
isClosed
())
{
if
(
cacheOrder
.
isClosed
())
{
log
.
info
(
"工单["
+
orderNo
+
"]已关闭,无法出库"
);
log
.
info
(
"工单["
+
orderNo
+
"]已关闭,无法出库"
);
return
"smfcore.order.hasClose"
;
return
"smfcore.order.hasClose"
;
}
}
ORDER_COLOR
nextColor
=
getNextColor
();
ORDER_COLOR
nextColor
=
getNextColor
();
if
(
nextColor
==
null
)
{
if
(
nextColor
==
null
)
{
log
.
info
(
"执行工单["
+
orderNo
+
"] outBom="
+
outBom
+
"时,已达最大可执行工单数"
);
log
.
info
(
"执行工单["
+
orderNo
+
"] outBom="
+
outBom
+
"时,已达最大可执行工单数"
);
...
@@ -538,8 +537,8 @@ public class LiteOrderCache {
...
@@ -538,8 +537,8 @@ public class LiteOrderCache {
//先查找是否已经锁定过库位,如果已经锁定过,出锁定的库位
//先查找是否已经锁定过库位,如果已经锁定过,出锁定的库位
List
<
StoragePos
>
lockPosList
=
storagePosManager
.
findLockPos
(
cacheOrder
.
getOrderNo
());
List
<
StoragePos
>
lockPosList
=
storagePosManager
.
findLockPos
(
cacheOrder
.
getOrderNo
());
if
(
lockPosList
!=
null
&&
lockPosList
.
size
()>
0
)
{
if
(
lockPosList
!=
null
&&
lockPosList
.
size
()
>
0
)
{
return
checkOutOrder
(
cacheOrder
).
getMsgKey
();
return
checkOutOrder
(
cacheOrder
).
getMsgKey
();
}
}
log
.
info
(
"开始执行工单["
+
orderNo
+
"] outBom="
+
outBom
);
log
.
info
(
"开始执行工单["
+
orderNo
+
"] outBom="
+
outBom
);
...
@@ -580,27 +579,27 @@ public class LiteOrderCache {
...
@@ -580,27 +579,27 @@ public class LiteOrderCache {
int
assignNum
=
0
;
int
assignNum
=
0
;
int
assignReelCount
=
0
;
int
assignReelCount
=
0
;
while
(
assignNum
<
remainNum
||
assignReelCount
<
remainReelCount
)
{
while
(
assignNum
<
remainNum
||
assignReelCount
<
remainReelCount
)
{
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
String
partNumber
=
orderItem
.
getPn
();
String
partNumber
=
orderItem
.
getPn
();
String
reelId
=
orderItem
.
getRi
();
String
reelId
=
orderItem
.
getRi
();
String
mpn
=
orderItem
.
getMpn
();
String
mpn
=
orderItem
.
getMpn
();
StoragePos
pos
=
null
;
StoragePos
pos
=
null
;
if
(!
Strings
.
isNullOrEmpty
(
reelId
))
{
if
(!
Strings
.
isNullOrEmpty
(
reelId
))
{
//RI
//RI
pos
=
storagePosManager
.
getByBarcode
(
reelId
);
pos
=
storagePosManager
.
getByBarcode
(
reelId
);
if
(
pos
!=
null
)
{
if
(
pos
!=
null
)
{
if
(
excludePosIds
.
contains
(
pos
.
getId
()))
{
if
(
excludePosIds
.
contains
(
pos
.
getId
()))
{
log
.
info
(
"工单["
+
orderNo
+
"]RI出库,任务数["
+
taskReelCount
+
"]出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"]已在操作队列中,跳过不处理"
);
log
.
info
(
"工单["
+
orderNo
+
"]RI出库,任务数["
+
taskReelCount
+
"]出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"]已在操作队列中,跳过不处理"
);
break
;
break
;
}
}
}
else
{
}
else
{
log
.
info
(
"工单["
+
orderNo
+
"]RI出库时,库存中未找到料盘["
+
reelId
+
"]"
);
log
.
info
(
"工单["
+
orderNo
+
"]RI出库时,库存中未找到料盘["
+
reelId
+
"]"
);
}
}
}
else
if
(
Strings
.
isNullOrEmpty
(
reelId
)
&&
!
Strings
.
isNullOrEmpty
(
partNumber
))
{
}
else
if
(
Strings
.
isNullOrEmpty
(
reelId
)
&&
!
Strings
.
isNullOrEmpty
(
partNumber
))
{
//PN
//PN
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
""
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getAppendData
());
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
""
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getAppendData
());
}
else
if
(
Strings
.
isNullOrEmpty
(
reelId
)
&&
Strings
.
isNullOrEmpty
(
partNumber
)
&&
!
Strings
.
isNullOrEmpty
(
mpn
)){
}
else
if
(
Strings
.
isNullOrEmpty
(
reelId
)
&&
Strings
.
isNullOrEmpty
(
partNumber
)
&&
!
Strings
.
isNullOrEmpty
(
mpn
))
{
pos
=
storagePosManager
.
findMpnInStorages
(
availableStorageIds
,
mpn
,
excludePosIds
,
checkoutType
,
orderItem
.
getAppendData
());
pos
=
storagePosManager
.
findMpnInStorages
(
availableStorageIds
,
mpn
,
excludePosIds
,
checkoutType
,
orderItem
.
getAppendData
());
}
}
if
(
pos
==
null
)
{
if
(
pos
==
null
)
{
// log.error("未找到可以出库的物料[" + partNumber + "]");
// log.error("未找到可以出库的物料[" + partNumber + "]");
...
@@ -610,7 +609,7 @@ public class LiteOrderCache {
...
@@ -610,7 +609,7 @@ public class LiteOrderCache {
assignReelCount
=
assignReelCount
+
1
;
assignReelCount
=
assignReelCount
+
1
;
taskReelCount
=
taskReelCount
+
1
;
taskReelCount
=
taskReelCount
+
1
;
log
.
info
(
"工单["
+
orderNo
+
"],任务数["
+
taskReelCount
+
"]出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
partNumber
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
log
.
info
(
"工单["
+
orderNo
+
"],任务数["
+
taskReelCount
+
"]出库位置仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
partNumber
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
DataLog
task
=
newTask
(
pos
)
;
DataLog
task
=
newTask
(
pos
);
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceName
(
cacheOrder
.
getOrderNo
());
task
.
setSourceName
(
cacheOrder
.
getOrderNo
());
...
@@ -624,7 +623,7 @@ public class LiteOrderCache {
...
@@ -624,7 +623,7 @@ public class LiteOrderCache {
taskService
.
addTaskToExecute
(
task
);
taskService
.
addTaskToExecute
(
task
);
}
}
//如果是RI出库,只有一盘,出完就结束
//如果是RI出库,只有一盘,出完就结束
if
(!
Strings
.
isNullOrEmpty
(
reelId
))
{
if
(!
Strings
.
isNullOrEmpty
(
reelId
))
{
break
;
break
;
}
}
}
}
...
@@ -633,7 +632,7 @@ public class LiteOrderCache {
...
@@ -633,7 +632,7 @@ public class LiteOrderCache {
}
}
cacheOrder
.
setTaskReelCount
(
taskReelCount
);
cacheOrder
.
setTaskReelCount
(
taskReelCount
);
cacheOrder
.
setTotalTaskReelCount
(
cacheOrder
.
getTotalTaskReelCount
()
+
taskReelCount
);
cacheOrder
.
setTotalTaskReelCount
(
cacheOrder
.
getTotalTaskReelCount
()
+
taskReelCount
);
log
.
info
(
"工单["
+
orderNo
+
"]任务分配结束,任务数["
+
taskReelCount
+
"]"
);
log
.
info
(
"工单["
+
orderNo
+
"]任务分配结束,任务数["
+
taskReelCount
+
"]"
);
smfApi
.
onOrderStatusChange
(
cacheOrder
);
smfApi
.
onOrderStatusChange
(
cacheOrder
);
//有需要出库的
//有需要出库的
...
@@ -650,6 +649,7 @@ public class LiteOrderCache {
...
@@ -650,6 +649,7 @@ public class LiteOrderCache {
}
}
return
""
;
return
""
;
}
}
/**
/**
* 防止仓位任务重复,需要排除掉已经分配掉的出库仓位
* 防止仓位任务重复,需要排除掉已经分配掉的出库仓位
*/
*/
...
@@ -658,7 +658,7 @@ public class LiteOrderCache {
...
@@ -658,7 +658,7 @@ public class LiteOrderCache {
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
Collection
<
String
>
operatingPosIds
=
new
HashSet
<>();
Collection
<
String
>
operatingPosIds
=
new
HashSet
<>();
for
(
DataLog
task
:
allTasks
)
{
for
(
DataLog
task
:
allTasks
)
{
if
(
task
.
isCheckOutTask
())
{
if
(
task
.
isCheckOutTask
())
{
String
posId
=
task
.
getPosId
();
String
posId
=
task
.
getPosId
();
if
(!
Strings
.
isNullOrEmpty
(
posId
))
{
if
(!
Strings
.
isNullOrEmpty
(
posId
))
{
operatingPosIds
.
add
(
task
.
getPosId
());
operatingPosIds
.
add
(
task
.
getPosId
());
...
@@ -671,7 +671,7 @@ public class LiteOrderCache {
...
@@ -671,7 +671,7 @@ public class LiteOrderCache {
private
DataLog
newTask
(
StoragePos
pos
)
{
private
DataLog
newTask
(
StoragePos
pos
)
{
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
DataLog
task
=
new
DataLog
(
storage
,
pos
.
getBarcode
(),
pos
);
DataLog
task
=
new
DataLog
(
storage
,
pos
.
getBarcode
(),
pos
);
String
operator
=
SecurityUtils
.
getLoginUsername
();
String
operator
=
SecurityUtils
.
getLoginUsername
();
task
.
setOperator
(
operator
);
task
.
setOperator
(
operator
);
return
task
;
return
task
;
...
@@ -679,25 +679,26 @@ public class LiteOrderCache {
...
@@ -679,25 +679,26 @@ public class LiteOrderCache {
/**
/**
* 关闭工单
* 关闭工单
*
* @param orderNo
* @param orderNo
*/
*/
public
String
closeOrder
(
String
orderNo
)
{
public
String
closeOrder
(
String
orderNo
)
{
LiteOrder
liteOrder
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
liteOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
liteOrder
==
null
)
{
if
(
liteOrder
==
null
)
{
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
liteOrder
==
null
)
{
if
(
liteOrder
==
null
)
{
return
"smfcore.order.out.notFound"
;
return
"smfcore.order.out.notFound"
;
}
}
}
}
//有任务的工单不能关闭
//有任务的工单不能关闭
List
<
DataLog
>
allTask
=
taskService
.
getAllTasks
();
List
<
DataLog
>
allTask
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
allTask
for
(
DataLog
task
:
allTask
)
{
)
{
if
(
OP
.
CHECKOUT
==
task
.
getType
()
&&
(!
task
.
isEnd
()))
{
if
(
OP
.
CHECKOUT
==
task
.
getType
()
&&
(!
task
.
isEnd
()))
{
//更新工单状态
//更新工单状态
String
taskSourceName
=
task
.
getSourceName
();
String
taskSourceName
=
task
.
getSourceName
();
if
(!
Strings
.
isNullOrEmpty
(
taskSourceName
)
&&
orderNo
.
equals
(
taskSourceName
))
{
if
(!
Strings
.
isNullOrEmpty
(
taskSourceName
)
&&
orderNo
.
equals
(
taskSourceName
))
{
log
.
info
(
"关闭工单["
+
orderNo
+
"]失败,有未完成的出库任务:"
+
task
.
getPosName
());
log
.
info
(
"关闭工单["
+
orderNo
+
"]失败,有未完成的出库任务:"
+
task
.
getPosName
());
return
"smfcore.order.close.taskNotEnd"
;
return
"smfcore.order.close.taskNotEnd"
;
}
}
}
}
...
@@ -709,11 +710,12 @@ public class LiteOrderCache {
...
@@ -709,11 +710,12 @@ public class LiteOrderCache {
liteOrder
.
setClosed
(
true
);
liteOrder
.
setClosed
(
true
);
liteOrderManager
.
save
(
liteOrder
);
liteOrderManager
.
save
(
liteOrder
);
smfApi
.
onOrderStatusChange
(
liteOrder
);
smfApi
.
onOrderStatusChange
(
liteOrder
);
return
"smfcore.order.close.success"
;
return
"smfcore.order.close.success"
;
}
}
/**
/**
* 工单详情补料出库
* 工单详情补料出库
*
* @param orderNo
* @param orderNo
* @param orderItemId
* @param orderItemId
* @return
* @return
...
@@ -721,46 +723,46 @@ public class LiteOrderCache {
...
@@ -721,46 +723,46 @@ public class LiteOrderCache {
public
ResultBean
orderItemSupplementOut
(
String
orderNo
,
String
orderItemId
)
{
public
ResultBean
orderItemSupplementOut
(
String
orderNo
,
String
orderItemId
)
{
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
)
{
if
(
cacheOrder
==
null
)
{
cacheOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
cacheOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
cacheOrder
==
null
)
{
if
(
cacheOrder
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.out.notFound"
,
"未找到工单"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.out.notFound"
,
"未找到工单"
);
}
}
}
}
if
(
cacheOrder
.
isClosed
())
{
if
(
cacheOrder
.
isClosed
())
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.hasClose"
,
"工单已关闭"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.hasClose"
,
"工单已关闭"
);
}
}
List
<
String
>
orderItemIds
=
Lists
.
newArrayList
(
orderItemId
.
split
(
","
));
List
<
String
>
orderItemIds
=
Lists
.
newArrayList
(
orderItemId
.
split
(
","
));
String
resultMsg
=
""
;
String
resultMsg
=
""
;
int
outCount
=
0
;
int
outCount
=
0
;
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
if
(
orderItemIds
.
contains
(
orderItem
.
getId
()))
{
if
(
orderItemIds
.
contains
(
orderItem
.
getId
()))
{
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
StoragePos
pos
=
null
;
StoragePos
pos
=
null
;
String
reelId
=
orderItem
.
getRi
();
String
reelId
=
orderItem
.
getRi
();
if
(
Strings
.
isNullOrEmpty
(
reelId
))
{
if
(
Strings
.
isNullOrEmpty
(
reelId
))
{
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
CHECKOUT_TYPE
checkoutType
=
dataCache
.
getCheckOutType
();
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
List
<
String
>
availableStorageIds
=
dataCache
.
getAvailableStorageIds
();
String
partNumber
=
orderItem
.
getPn
();
String
partNumber
=
orderItem
.
getPn
();
//PN
//PN
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
);
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
partNumber
,
excludePosIds
,
checkoutType
);
}
else
{
}
else
{
//RI
//RI
pos
=
storagePosManager
.
getByBarcode
(
orderItem
.
getRi
());
pos
=
storagePosManager
.
getByBarcode
(
orderItem
.
getRi
());
}
}
if
(
pos
==
null
)
{
if
(
pos
==
null
)
{
log
.
info
(
"PN["
+
orderItem
.
getRi
()+
"]RI["
+
orderItem
.
getPn
()+
"]出库时,未找到物料,忽略"
);
log
.
info
(
"PN["
+
orderItem
.
getRi
()
+
"]RI["
+
orderItem
.
getPn
()
+
"]出库时,未找到物料,忽略"
);
//return "smfcore.order.supplementOutFail";
//return "smfcore.order.supplementOutFail";
continue
;
continue
;
}
}
if
(
excludePosIds
.
contains
(
pos
.
getId
()))
{
if
(
excludePosIds
.
contains
(
pos
.
getId
()))
{
log
.
info
(
"工单["
+
orderNo
+
"]RI出库,仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"]已在操作队列中,跳过不处理"
);
log
.
info
(
"工单["
+
orderNo
+
"]RI出库,仓位【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"]已在操作队列中,跳过不处理"
);
}
else
{
}
else
{
outCount
=
outCount
+
1
;
outCount
=
outCount
+
1
;
log
.
info
(
"工单["
+
orderNo
+
"]["
+
orderItem
.
getId
()+
"]补料出库:仓位["
+
pos
.
getPosName
()
+
"]RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
orderItem
.
getPn
()
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
log
.
info
(
"工单["
+
orderNo
+
"]["
+
orderItem
.
getId
()
+
"]补料出库:仓位["
+
pos
.
getPosName
()
+
"]RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
orderItem
.
getPn
()
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
DataLog
task
=
newTask
(
pos
)
;
DataLog
task
=
newTask
(
pos
);
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceId
(
cacheOrder
.
getId
());
task
.
setSourceName
(
cacheOrder
.
getOrderNo
());
task
.
setSourceName
(
cacheOrder
.
getOrderNo
());
...
@@ -770,23 +772,23 @@ public class LiteOrderCache {
...
@@ -770,23 +772,23 @@ public class LiteOrderCache {
// task.setLightColor(nextColor.getRgb());
// task.setLightColor(nextColor.getRgb());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
// task = dataLogDao.save(task);
// task = dataLogDao.save(task);
try
{
try
{
taskService
.
addTaskToExecute
(
task
);
taskService
.
addTaskToExecute
(
task
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
String
msg
=
"工单["
+
orderNo
+
"]["
+
orderItem
.
getId
()+
"]补料出库:仓位["
+
pos
.
getPosName
()
+
"]RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
orderItem
.
getPn
()
+
"] num:"
+
pos
.
getBarcode
().
getAmount
();
String
msg
=
"工单["
+
orderNo
+
"]["
+
orderItem
.
getId
()
+
"]补料出库:仓位["
+
pos
.
getPosName
()
+
"]RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
orderItem
.
getPn
()
+
"] num:"
+
pos
.
getBarcode
().
getAmount
();
log
.
error
(
"补料生成任务出错["
+
msg
+
"]:"
+
e
.
getMessage
());
log
.
error
(
"补料生成任务出错["
+
msg
+
"]:"
+
e
.
getMessage
());
}
}
}
}
}
}
}
}
if
(
outCount
>
0
)
{
if
(
outCount
>
0
)
{
cacheOrder
.
setTaskReelCount
(
outCount
);
cacheOrder
.
setTaskReelCount
(
outCount
);
cacheOrder
.
setTaskFinishedTime
(-
1
);
cacheOrder
.
setTaskFinishedTime
(-
1
);
cacheOrder
.
setFinishedReelCount
(
0
);
cacheOrder
.
setFinishedReelCount
(
0
);
liteOrderManager
.
save
(
cacheOrder
);
liteOrderManager
.
save
(
cacheOrder
);
liteOrderMap
.
put
(
cacheOrder
.
getOrderNo
(),
cacheOrder
);
liteOrderMap
.
put
(
cacheOrder
.
getOrderNo
(),
cacheOrder
);
return
ResultBean
.
newErrorResult
(
0
,
"smfcore.order.supplement.result"
,
"操作成功,共出库"
+
outCount
+
"盘物料"
);
return
ResultBean
.
newErrorResult
(
0
,
"smfcore.order.supplement.result"
,
"操作成功,共出库"
+
outCount
+
"盘物料"
);
}
}
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.supplementOutFail"
,
"补料出库失败,无可出库料盘"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.order.supplementOutFail"
,
"补料出库失败,无可出库料盘"
);
}
}
...
@@ -825,26 +827,47 @@ public class LiteOrderCache {
...
@@ -825,26 +827,47 @@ public class LiteOrderCache {
}
}
public
synchronized
void
preTaskCheckOut
(
LiteOrder
order
,
String
operationId
,
List
<
Material
>
materialList
)
{
public
synchronized
String
preTaskCheckOut
(
LiteOrder
order
,
String
operationId
,
List
<
Material
>
materialList
,
boolean
isRetry
)
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
order
.
setTaskReelCount
(
0
);
order
.
setTaskReelCount
(
0
);
order
.
setFinishedReelCount
(
0
);
order
.
setFinishedReelCount
(
0
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"]开始出库
"
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"]开始出库
,isRetry="
+
isRetry
);
int
taskReelCount
=
0
;
int
taskReelCount
=
0
;
List
<
StoragePos
>
storagePosList
=
new
ArrayList
<>();
List
<
String
>
barcodeList
=
new
ArrayList
<>();
if
(
isRetry
)
{
materialList
=
new
ArrayList
<>();
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
if
(
orderItem
.
getStatus
().
equals
(
OrderItemStatus
.
executFail
))
{
Material
material
=
new
Material
();
material
.
setSerialNum
(
orderItem
.
getRi
());
material
.
setPartNumber
(
orderItem
.
getPn
());
materialList
.
add
(
material
);
barcodeList
.
add
(
orderItem
.
getRi
());
}
}
if
(
materialList
.
size
()
<
0
)
{
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] 未找到可以retry的物料"
);
return
""
;
}
storagePosList
=
storagePosManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
barcodeList
)));
}
else
{
//提取barcode
barcodeList
=
materialList
.
stream
().
map
(
item
->
item
.
getSerialNum
()).
collect
(
Collectors
.
toList
());
storagePosList
=
storagePosManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
barcodeList
)));
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
materialList
=
storagePosList
.
stream
().
map
(
item
->
{
Material
material
=
new
Material
();
material
.
setSerialNum
(
item
.
getBarcode
().
getBarcode
());
material
.
setPartNumber
(
item
.
getBarcode
().
getPartNumber
());
return
material
;
}).
collect
(
Collectors
.
toList
());
}
//mes提前扣除,扣除成功的直接出库,失败的标记状态
//提取barcode
List
<
String
>
barcodeList
=
materialList
.
stream
().
map
(
item
->
item
.
getSerialNum
()).
collect
(
Collectors
.
toList
());
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
barcodeList
)));
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
materialList
=
storagePosList
.
stream
().
map
(
item
->
{
Material
material
=
new
Material
();
material
.
setSerialNum
(
item
.
getBarcode
().
getBarcode
());
material
.
setPartNumber
(
item
.
getBarcode
().
getPartNumber
());
return
material
;
}).
collect
(
Collectors
.
toList
());
}
}
//mes提前扣除,扣除成功的直接出库,失败的标记状态
List
<
TrackStatus
>
trackStatusList
=
new
ArrayList
<>();
List
<
TrackStatus
>
trackStatusList
=
new
ArrayList
<>();
...
@@ -867,7 +890,9 @@ public class LiteOrderCache {
...
@@ -867,7 +890,9 @@ public class LiteOrderCache {
}
else
{
}
else
{
orderItem
.
setNeedNum
(
storagePos
.
getBarcode
().
getAmount
());
orderItem
.
setNeedNum
(
storagePos
.
getBarcode
().
getAmount
());
TrackStatus
trackStatus
=
trackStatusList
.
stream
().
filter
(
item
->
ri
.
equals
(
item
.
getSerialNum
())).
findAny
().
orElse
(
null
);
TrackStatus
trackStatus
=
trackStatusList
.
stream
().
filter
(
item
->
ri
.
equals
(
item
.
getSerialNum
())).
findAny
().
orElse
(
null
);
if
(
ObjectUtil
.
isEmpty
(
orderItem
.
getPn
()))
{
orderItem
.
setPn
(
storagePos
.
getBarcode
().
getPartNumber
());
}
if
(
trackStatus
!=
null
&&
trackStatus
.
isSuccess
())
{
if
(
trackStatus
!=
null
&&
trackStatus
.
isSuccess
())
{
//生成任务
//生成任务
...
@@ -882,6 +907,7 @@ public class LiteOrderCache {
...
@@ -882,6 +907,7 @@ public class LiteOrderCache {
taskReelCount
++;
taskReelCount
++;
//设置状态.正在出库
//设置状态.正在出库
orderItem
.
setStatus
(
OrderItemStatus
.
executing
);
orderItem
.
setStatus
(
OrderItemStatus
.
executing
);
orderItem
.
setExecutFailReason
(
""
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] ,pn["
+
orderItem
.
getPn
()
+
"] ,RI["
+
ri
+
"] 验证成功,开始出库,累计出库盘数="
+
taskReelCount
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] ,pn["
+
orderItem
.
getPn
()
+
"] ,RI["
+
ri
+
"] 验证成功,开始出库,累计出库盘数="
+
taskReelCount
);
}
else
{
}
else
{
...
@@ -903,6 +929,21 @@ public class LiteOrderCache {
...
@@ -903,6 +929,21 @@ public class LiteOrderCache {
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] 出库完成,累计任务数="
+
taskReelCount
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] 出库完成,累计任务数="
+
taskReelCount
);
order
.
setTaskReelCount
(
taskReelCount
);
order
.
setTaskReelCount
(
taskReelCount
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
+
taskReelCount
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
+
taskReelCount
);
int
currTask
=
0
;
if
(
isRetry
)
{
//判断是否之前有未结束任务
List
<
DataLog
>
dataLogs
=
new
ArrayList
<>();
dataLogs
.
addAll
(
taskService
.
getQueueTasks
());
for
(
DataLog
log
:
dataLogs
)
{
if
(
log
.
isCheckOutTask
()
&&
ObjectUtil
.
isNotEmpty
(
log
.
getSourceId
())
&&
log
.
getSourceId
().
equals
(
order
.
getId
()))
{
currTask
++;
}
}
if
(
currTask
>
0
)
{
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] 还有 ["
+
currTask
+
"] 未完成的出库任务"
);
}
}
if
(
taskReelCount
<=
0
)
{
if
(
taskReelCount
<=
0
)
{
if
(
order
.
isOutTails
())
{
if
(
order
.
isOutTails
())
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS_FINISHED
);
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS_FINISHED
);
...
@@ -911,12 +952,13 @@ public class LiteOrderCache {
...
@@ -911,12 +952,13 @@ public class LiteOrderCache {
}
}
liteOrderManager
.
save
(
order
);
liteOrderManager
.
save
(
order
);
addOrderToMap
(
order
);
addOrderToMap
(
order
);
return
""
;
}
}
/**
/**
* 工单挑料,OutSide Shelf Dispatch Controlled Dispatch
* 工单挑料,OutSide Shelf Dispatch Controlled Dispatch
*/
*/
public
synchronized
String
OrderReady
(
String
orderNo
,
String
lineId
)
{
public
synchronized
String
OrderReady
(
String
orderNo
,
String
lineId
)
{
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
)
{
if
(
cacheOrder
==
null
)
{
...
@@ -1054,9 +1096,9 @@ public class LiteOrderCache {
...
@@ -1054,9 +1096,9 @@ public class LiteOrderCache {
//调用API009进行验证
//调用API009进行验证
Map
<
String
,
MaterialStatus
>
apiResultMap
=
MicronApi
.
Api009
(
cacheOrder
.
getOperationId
(),
lineId
,
allBarcodes
);
Map
<
String
,
MaterialStatus
>
apiResultMap
=
MicronApi
.
Api009
(
cacheOrder
.
getOperationId
(),
lineId
,
allBarcodes
);
List
<
StoragePos
>
lockPos
=
new
ArrayList
<>();
List
<
StoragePos
>
lockPos
=
new
ArrayList
<>();
for
(
LiteOrderItem
item
:
for
(
LiteOrderItem
item
:
newItems
)
{
newItems
)
{
item
.
setOutNum
(
0
);
item
.
setOutNum
(
0
);
...
@@ -1066,7 +1108,7 @@ public class LiteOrderCache {
...
@@ -1066,7 +1108,7 @@ public class LiteOrderCache {
for
(
LiteOrderItem
reelItem
:
for
(
LiteOrderItem
reelItem
:
item
.
getSelectItems
())
{
item
.
getSelectItems
())
{
MaterialStatus
s
=
apiResultMap
.
get
(
reelItem
.
getRi
());
MaterialStatus
s
=
apiResultMap
.
get
(
reelItem
.
getRi
());
if
(
s
!=
null
&&
s
.
isAvailable
())
{
if
(
s
!=
null
&&
s
.
isAvailable
())
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
s
.
getSerialNum
());
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
s
.
getSerialNum
());
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()
+
"】"
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()
+
"】"
);
...
@@ -1112,13 +1154,12 @@ public class LiteOrderCache {
...
@@ -1112,13 +1154,12 @@ public class LiteOrderCache {
}
}
public
synchronized
String
dispatchCheckOut
(
LiteOrder
order
,
boolean
isRetry
)
{
public
synchronized
void
dispatchCheckOut
(
LiteOrder
order
)
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
order
.
setTaskReelCount
(
0
);
order
.
setTaskReelCount
(
0
);
order
.
setFinishedReelCount
(
0
);
order
.
setFinishedReelCount
(
0
);
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"]开始出库
"
);
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"]开始出库
,isRetry="
+
isRetry
);
int
taskReelCount
=
0
;
int
taskReelCount
=
0
;
List
<
String
>
needOutBarcode
=
new
ArrayList
<>();
List
<
String
>
needOutBarcode
=
new
ArrayList
<>();
...
@@ -1127,13 +1168,24 @@ public class LiteOrderCache {
...
@@ -1127,13 +1168,24 @@ public class LiteOrderCache {
for
(
LiteOrderItem
selItem
:
for
(
LiteOrderItem
selItem
:
item
.
getSelectItems
())
{
item
.
getSelectItems
())
{
if
(
isRetry
)
{
if
(
selItem
.
getStatus
().
equals
(
OrderItemStatus
.
CheckOk
))
{
if
(
selItem
.
getStatus
().
equals
(
OrderItemStatus
.
executFail
))
{
//只出checkOK的
//retry检查出库失败的
needOutBarcode
.
add
(
selItem
.
getRi
());
needOutBarcode
.
add
(
selItem
.
getRi
());
}
}
else
{
if
(
selItem
.
getStatus
().
equals
(
OrderItemStatus
.
CheckOk
))
{
//只出checkOK的
needOutBarcode
.
add
(
selItem
.
getRi
());
}
}
}
}
}
}
}
if
(
needOutBarcode
.
size
()
<
0
)
{
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] 未找到可以retry的物料"
);
return
""
;
}
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
needOutBarcode
)));
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
needOutBarcode
)));
List
<
Material
>
materialList
=
new
ArrayList
<>();
List
<
Material
>
materialList
=
new
ArrayList
<>();
...
@@ -1173,11 +1225,12 @@ public class LiteOrderCache {
...
@@ -1173,11 +1225,12 @@ public class LiteOrderCache {
taskReelCount
++;
taskReelCount
++;
//设置状态.正在出库
//设置状态.正在出库
selItem
.
setStatus
(
OrderItemStatus
.
executing
);
selItem
.
setStatus
(
OrderItemStatus
.
executing
);
selItem
.
setExecutFailReason
(
""
);
outNum
+=
storagePos
.
getBarcode
().
getAmount
();
outNum
+=
storagePos
.
getBarcode
().
getAmount
();
outReelCount
+=
1
;
outReelCount
+=
1
;
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] ,pn["
+
orderItem
.
getPn
()
+
"] ,RI["
+
ri
+
"] 验证成功,开始出库,累计出库盘数="
+
taskReelCount
);
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] ,pn["
+
orderItem
.
getPn
()
+
"] ,RI["
+
ri
+
"] 验证成功,开始出库,累计出库盘数="
+
taskReelCount
);
}
else
{
}
else
{
if
(
trackStatus
!=
null
)
{
if
(
trackStatus
!=
null
)
{
selItem
.
setExecutFailReason
(
trackStatus
.
getDescription
());
selItem
.
setExecutFailReason
(
trackStatus
.
getDescription
());
}
}
selItem
.
setStatus
(
OrderItemStatus
.
executFail
);
selItem
.
setStatus
(
OrderItemStatus
.
executFail
);
...
@@ -1198,7 +1251,24 @@ public class LiteOrderCache {
...
@@ -1198,7 +1251,24 @@ public class LiteOrderCache {
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] 出库完成,累计任务数="
+
taskReelCount
);
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] 出库完成,累计任务数="
+
taskReelCount
);
order
.
setTaskReelCount
(
taskReelCount
);
order
.
setTaskReelCount
(
taskReelCount
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
+
taskReelCount
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
+
taskReelCount
);
if
(
taskReelCount
<=
0
)
{
int
currTask
=
0
;
if
(
isRetry
)
{
//判断是否之前有未结束任务
List
<
DataLog
>
dataLogs
=
new
ArrayList
<>();
dataLogs
.
addAll
(
taskService
.
getQueueTasks
());
for
(
DataLog
log
:
dataLogs
)
{
if
(
log
.
isCheckOutTask
()
&&
ObjectUtil
.
isNotEmpty
(
log
.
getSourceId
())
&&
log
.
getSourceId
().
equals
(
order
.
getId
()))
{
currTask
++;
}
}
if
(
currTask
>
0
)
{
log
.
info
(
"dispatchCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] 还有 ["
+
currTask
+
"] 未完成的出库任务"
);
}
}
if
(
taskReelCount
<=
0
&&
currTask
<=
0
)
{
if
(
order
.
isOutTails
())
{
if
(
order
.
isOutTails
())
{
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS_FINISHED
);
order
.
setStatus
(
LITEORDER_STATUS
.
TAILS_FINISHED
);
}
}
...
@@ -1206,5 +1276,6 @@ public class LiteOrderCache {
...
@@ -1206,5 +1276,6 @@ public class LiteOrderCache {
}
}
liteOrderManager
.
save
(
order
);
liteOrderManager
.
save
(
order
);
addOrderToMap
(
order
);
addOrderToMap
(
order
);
return
""
;
}
}
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
查看文件 @
d3ed66f
...
@@ -203,7 +203,7 @@ public class MicronApi {
...
@@ -203,7 +203,7 @@ public class MicronApi {
throw
new
ApiException
(
"smfcore.api.001."
+
errmsg
,
error
+
";"
+
errmsg
,
new
String
[]{});
throw
new
ApiException
(
"smfcore.api.001."
+
errmsg
,
error
+
";"
+
errmsg
,
new
String
[]{});
}
else
{
}
else
{
log
.
info
(
"API001 ,验证失败,获取数据失败:"
+
errmsg
);
log
.
info
(
"API001 ,验证失败,获取数据失败:"
+
errmsg
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API001
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API001
: "
+
result
.
getResponseData
()
});
}
}
}
}
...
@@ -357,7 +357,7 @@ public class MicronApi {
...
@@ -357,7 +357,7 @@ public class MicronApi {
}
}
else
{
else
{
log
.
info
(
"API002 ,接口通信失败"
);
log
.
info
(
"API002 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API002
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API002
: "
+
result
.
getResponseData
()
});
}
}
return
resultMap
;
return
resultMap
;
}
}
...
@@ -433,7 +433,7 @@ public class MicronApi {
...
@@ -433,7 +433,7 @@ public class MicronApi {
log
.
info
(
"API004 ,接口通信失败"
);
log
.
info
(
"API004 ,接口通信失败"
);
//throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"API004"});
//throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"API004"});
String
msg
=
"API004 Failed to get data"
;
String
msg
=
"API004
: "
+
result
.
getResponseData
()+
"
Failed to get data"
;
Object
message
=
result
.
getResult
(
"message"
,
false
);
Object
message
=
result
.
getResult
(
"message"
,
false
);
if
(
message
!=
null
){
if
(
message
!=
null
){
msg
=
message
.
toString
();
msg
=
message
.
toString
();
...
@@ -453,40 +453,46 @@ public class MicronApi {
...
@@ -453,40 +453,46 @@ public class MicronApi {
String
url
=
config
.
getUrl
(
config
.
api_name_005
);
String
url
=
config
.
getUrl
(
config
.
api_name_005
);
List
<
Material
>
materialList
=
new
ArrayList
<>();
List
<
Material
>
materialList
=
new
ArrayList
<>();
if
(
Debug
)
{
if
(
Debug
)
{
materialList
.
add
(
new
Material
(
"serialNum1"
,
"partNumber1"
));
materialList
.
add
(
new
Material
(
"serialNum1"
,
"partNumber1"
));
return
materialList
;
return
materialList
;
}
}
url
=
MessageFormat
.
format
(
url
,
operationId
,
linePrepOrderId
);
url
=
MessageFormat
.
format
(
url
,
operationId
,
linePrepOrderId
);
try
{
try
{
log
.
info
(
"调用MES接口 API005: url="
+
url
+
""
);
log
.
info
(
"调用MES接口 API005: url="
+
url
+
""
);
MicronResult
result
=
HttpHelper
.
getMicronJson
(
url
);
MicronResult
result
=
HttpHelper
.
getMicronJson
(
url
);
String
errMsg
=
getDErrorMsg
(
result
);
String
errMsg
=
getDErrorMsg
(
result
);
if
(
result
.
isOk
()
)
{
if
(
result
.
isOk
())
{
List
<
Object
>
objects
=
result
.
getResult
(
"materials"
,
false
);
List
<
Object
>
objects
=
result
.
getResult
(
"materials"
,
false
);
if
(
objects
==
null
||
objects
.
size
()<=
0
){
if
(
objects
==
null
||
objects
.
size
()
<=
0
)
{
log
.
info
(
"API005 ,接口通信失败"
);
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
))
{
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API005"
});
log
.
info
(
"API005 ,接口通信失败:"
+
errMsg
);
throw
new
ApiException
(
errMsg
);
}
else
{
log
.
info
(
"API005 ,接口通信失败 :"
+
result
.
getResponseData
());
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API005 : "
+
result
.
getResponseData
()});
}
}
}
for
(
Object
object
:
for
(
Object
object
:
objects
)
{
objects
)
{
Material
material
=
JsonUtil
.
toObj
(
JsonUtil
.
toJsonStr
(
object
)
,
Material
.
class
);
Material
material
=
JsonUtil
.
toObj
(
JsonUtil
.
toJsonStr
(
object
),
Material
.
class
);
materialList
.
add
(
material
);
materialList
.
add
(
material
);
}
}
return
materialList
;
return
materialList
;
}
}
else
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
))
{
else
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
))
{
log
.
info
(
"API005 ,接口通信失败:"
+
errMsg
);
log
.
info
(
"API005 ,接口通信失败:"
+
errMsg
);
throw
new
ApiException
(
errMsg
);
throw
new
ApiException
(
errMsg
);
}
else
{
}
else
{
log
.
info
(
"API005 ,接口通信失败
"
);
log
.
info
(
"API005 ,接口通信失败
:"
+
result
.
getResponseData
()
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API005
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API005
: "
+
result
.
getResponseData
()
});
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
log
.
error
(
url
+
"出错"
,
e
);
return
null
;
return
null
;
}
}
}
}
...
@@ -524,8 +530,14 @@ public class MicronApi {
...
@@ -524,8 +530,14 @@ public class MicronApi {
List
<
Object
>
objects
=
result
.
getResult
(
"materials"
,
false
);
List
<
Object
>
objects
=
result
.
getResult
(
"materials"
,
false
);
if
(
objects
==
null
||
objects
.
size
()<=
0
){
if
(
objects
==
null
||
objects
.
size
()<=
0
){
log
.
info
(
"API006 ,接口通信失败"
);
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
)){
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API006"
});
log
.
info
(
"API006 ,接口通信失败:"
+
errMsg
);
throw
new
ApiException
(
errMsg
);
}
else
{
log
.
info
(
"API006 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API006:"
+
result
.
getResponseData
()});
}
}
}
for
(
Object
object
:
for
(
Object
object
:
objects
)
{
objects
)
{
...
@@ -539,7 +551,7 @@ public class MicronApi {
...
@@ -539,7 +551,7 @@ public class MicronApi {
}
else
{
}
else
{
log
.
info
(
"API006 ,接口通信失败"
);
log
.
info
(
"API006 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API006
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API006
:"
+
result
.
getResponseData
()
});
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -603,7 +615,7 @@ public class MicronApi {
...
@@ -603,7 +615,7 @@ public class MicronApi {
// throw new ApiException(errMsg);
// throw new ApiException(errMsg);
}
else
{
}
else
{
log
.
info
(
"API007 ,接口通信失败"
);
log
.
info
(
"API007 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API007
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API007
: "
+
micronResult
.
getResponseData
()
});
}
}
}
catch
(
ApiException
e
)
{
}
catch
(
ApiException
e
)
{
...
@@ -650,7 +662,7 @@ public class MicronApi {
...
@@ -650,7 +662,7 @@ public class MicronApi {
}
else
{
}
else
{
log
.
info
(
"API008 ,接口通信失败"
);
log
.
info
(
"API008 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API008
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API008
: "
+
micronResult
.
getResponseData
()
});
}
}
}
catch
(
ApiException
e
)
{
}
catch
(
ApiException
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
log
.
error
(
url
+
"出错"
,
e
);
...
@@ -731,7 +743,7 @@ public class MicronApi {
...
@@ -731,7 +743,7 @@ public class MicronApi {
}
else
{
}
else
{
log
.
info
(
"API009 ,接口通信失败"
);
log
.
info
(
"API009 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API009
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API009
: "
+
micronResult
.
getResponseData
()
});
}
}
}
catch
(
ApiException
e
)
{
}
catch
(
ApiException
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
log
.
error
(
url
+
"出错"
,
e
);
...
@@ -741,7 +753,7 @@ public class MicronApi {
...
@@ -741,7 +753,7 @@ public class MicronApi {
public
static
List
<
TrackStatus
>
Api010
(
String
operationId
,
List
<
Material
>
materialList
)
{
public
static
List
<
TrackStatus
>
Api010
(
String
operationId
,
List
<
Material
>
materialList
)
{
//出库前预扣
List
<
TrackStatus
>
statusList
=
new
ArrayList
<>();
List
<
TrackStatus
>
statusList
=
new
ArrayList
<>();
if
(
Debug
){
if
(
Debug
){
for
(
Material
m
:
for
(
Material
m
:
...
@@ -780,11 +792,6 @@ public class MicronApi {
...
@@ -780,11 +792,6 @@ public class MicronApi {
TrackStatus
s
=
JsonUtil
.
toObj
(
JsonUtil
.
toJsonStr
(
obj
)
,
TrackStatus
.
class
);
TrackStatus
s
=
JsonUtil
.
toObj
(
JsonUtil
.
toJsonStr
(
obj
)
,
TrackStatus
.
class
);
statusList
.
add
(
s
);
statusList
.
add
(
s
);
}
}
// if(statusList==null||statusList.size()<=0){
//
// log.info("API010 ,接口通信失败");
// throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"API010"});
// }
}
}
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
)&&(
statusList
==
null
||
statusList
.
size
()<=
0
)
){
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
)&&(
statusList
==
null
||
statusList
.
size
()<=
0
)
){
for
(
Material
m
:
for
(
Material
m
:
...
@@ -804,7 +811,7 @@ public class MicronApi {
...
@@ -804,7 +811,7 @@ public class MicronApi {
}
}
else
{
else
{
log
.
info
(
"API010 ,接口通信失败"
);
log
.
info
(
"API010 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API010
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API010
: "
+
micronResult
.
getResponseData
()
});
}
}
//statusList = micronResult.getResult("trackStatus");
//statusList = micronResult.getResult("trackStatus");
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -847,7 +854,7 @@ public class MicronApi {
...
@@ -847,7 +854,7 @@ public class MicronApi {
}
else
{
}
else
{
log
.
info
(
"Api011 ,接口通信失败"
);
log
.
info
(
"Api011 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"Api011
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"Api011
: "
+
result
.
getResponseData
()
});
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
log
.
error
(
url
+
"出错"
,
e
);
...
@@ -946,7 +953,7 @@ public class MicronApi {
...
@@ -946,7 +953,7 @@ public class MicronApi {
if
(
ObjectUtil
.
isNotEmpty
(
msg
))
{
if
(
ObjectUtil
.
isNotEmpty
(
msg
))
{
return
msg
;
return
msg
;
}
}
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"Api201
"
});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"Api201
: "
+
result
.
getResponseData
()
});
}
catch
(
ApiException
e
)
{
}
catch
(
ApiException
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
log
.
error
(
url
+
"出错"
,
e
);
return
e
.
getMessage
();
return
e
.
getMessage
();
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
查看文件 @
d3ed66f
...
@@ -534,6 +534,7 @@ private IStoragePosManager storagePosManager;
...
@@ -534,6 +534,7 @@ private IStoragePosManager storagePosManager;
public
ResultBean
checkOut
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
public
ResultBean
checkOut
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
String
mode
=
params
.
get
(
"mode"
).
toString
();
String
mode
=
params
.
get
(
"mode"
).
toString
();
log
.
info
(
" checkOut :mode="
+
mode
+
",开始确认出库"
);
//判断有没有生成任务
//判断有没有生成任务
LiteOrder
order
=
getOrderByMode
(
mode
);
LiteOrder
order
=
getOrderByMode
(
mode
);
...
@@ -542,7 +543,7 @@ private IStoragePosManager storagePosManager;
...
@@ -542,7 +543,7 @@ private IStoragePosManager storagePosManager;
}
}
//调用API010扣除库存,扣除成功的才可以出库
//调用API010扣除库存,扣除成功的才可以出库
liteOrderCache
.
dispatchCheckOut
(
order
);
liteOrderCache
.
dispatchCheckOut
(
order
,
false
);
//工单开始出库
//工单开始出库
...
@@ -556,48 +557,58 @@ private IStoragePosManager storagePosManager;
...
@@ -556,48 +557,58 @@ private IStoragePosManager storagePosManager;
public
ResultBean
retry
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
public
ResultBean
retry
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
String
mode
=
params
.
get
(
"mode"
).
toString
();
String
mode
=
params
.
get
(
"mode"
).
toString
();
log
.
info
(
" retry :mode="
+
mode
+
",
入库完成发送失败的,重新发送,其他状态暂不处理
"
);
log
.
info
(
" retry :mode="
+
mode
+
",
重新出库
"
);
//判断有没有生成任务
//判断有没有生成任务
LiteOrder
order
=
getOrderByMode
(
mode
);
LiteOrder
order
=
getOrderByMode
(
mode
);
if
(
order
==
null
)
{
if
(
order
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
}
List
<
LiteOrderItem
>
liteOrderItemList
=
order
.
getOrderItems
();
List
<
LiteOrderItem
>
orderItems
=
new
ArrayList
<>();
boolean
canClose
=
true
;
for
(
LiteOrderItem
orderItem
:
liteOrderItemList
)
{
if
(
orderItem
.
getStatus
()
==
OrderItemStatus
.
notify_fail
)
{
String
id
=
orderItem
.
getId
();
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
is
(
id
)));
if
(
dataLogList
!=
null
&&
!
dataLogList
.
isEmpty
())
{
log
.
info
(
"retry: ["
+
order
.
getOrderNo
()
+
"] ["
+
orderItem
.
getRi
()
+
"] 重发API007 "
);
String
msg
=
MicronApi
.
Api007
(
order
.
getOrderNo
(),
order
.
getId
(),
dataLogList
);
if
(
ObjectUtil
.
isEmpty
(
msg
))
{
orderItem
.
setStatus
(
OrderItemStatus
.
notify_success
);
}
else
{
orderItem
.
setExecutFailReason
(
msg
);
orderItem
.
setStatus
(
OrderItemStatus
.
notify_fail
);
canClose
=
false
;
}
liteOrderItemManager
.
save
(
orderItem
);
}
}
else
if
(
orderItem
.
getStatus
()==
OrderItemStatus
.
executing
){
canClose
=
false
;
}
orderItems
.
add
(
orderItem
);
}
order
.
setOrderItems
(
orderItems
);
if
(
canClose
){
//可以关闭工单
CloseOrder
(
order
);
}
else
{
liteOrderCache
.
addOrderToMap
(
order
);
liteOrderCache
.
dispatchCheckOut
(
order
,
true
);
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
// //判断有没有生成任务
// LiteOrder order=getOrderByMode(mode);
// if (order == null) {
// return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
// }
// List<LiteOrderItem> liteOrderItemList=order.getOrderItems();
// List<LiteOrderItem> orderItems = new ArrayList<>();
// boolean canClose=true;
// for (LiteOrderItem orderItem :
// liteOrderItemList) {
// if (orderItem.getStatus() == OrderItemStatus.notify_fail) {
// String id = orderItem.getId();
// List<DataLog> dataLogList = dataLogManager.findByQuery(new Query(Criteria.where("subSourceId").is(id)));
// if (dataLogList != null && !dataLogList.isEmpty()) {
//
// log.info("retry: [" + order.getOrderNo() + "] [" + orderItem.getRi() + "] 重发API007 ");
// String msg = MicronApi.Api007(order.getOrderNo(), order.getId(), dataLogList);
// if (ObjectUtil.isEmpty(msg)) {
// orderItem.setStatus(OrderItemStatus.notify_success);
// } else {
// orderItem.setExecutFailReason(msg);
// orderItem.setStatus(OrderItemStatus.notify_fail);
// canClose=false;
// }
// liteOrderItemManager.save(orderItem);
//
// }
// }else if(orderItem.getStatus()==OrderItemStatus.executing){
// canClose=false;
// }
// orderItems.add(orderItem);
// }
// order.setOrderItems(orderItems);
// if(canClose){
// //可以关闭工单
// CloseOrder(order);
// }else{
//
// liteOrderCache.addOrderToMap(order);
// }
// return ResultBean.newOkResult("");
}
}
private
void
CloseOrder
(
LiteOrder
order
)
{
private
void
CloseOrder
(
LiteOrder
order
)
{
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
查看文件 @
d3ed66f
...
@@ -221,7 +221,8 @@ public class MicronPreTaskController {
...
@@ -221,7 +221,8 @@ public class MicronPreTaskController {
liteOrderCache
.
addOrderToMap
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
log
.
info
(
"submit 勾选后,生成工单:["
+
operationId
+
"]["
+
mode
+
"]"
);
log
.
info
(
"submit 勾选后,生成工单:["
+
operationId
+
"]["
+
mode
+
"]"
);
//开始查询是否可以出库
//开始查询是否可以出库
liteOrderCache
.
preTaskCheckOut
(
liteOrder
,
operationId
,
materialList
);
String
msg
=
liteOrderCache
.
preTaskCheckOut
(
liteOrder
,
operationId
,
materialList
,
false
);
}
}
}
catch
(
Exception
ex
){
}
catch
(
Exception
ex
){
...
@@ -258,53 +259,65 @@ public class MicronPreTaskController {
...
@@ -258,53 +259,65 @@ public class MicronPreTaskController {
@AnonymousAccess
@AnonymousAccess
public
ResultBean
retry
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
public
ResultBean
retry
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
String
mode
=
params
.
get
(
"mode"
).
toString
();
String
mode
=
params
.
get
(
"mode"
).
toString
();
log
.
info
(
" retry :mode="
+
mode
+
",
入库完成发送失败的,重新发送,其他状态暂不处理
"
);
log
.
info
(
" retry :mode="
+
mode
+
",
重新出库
"
);
TaskDto
dto
=
getTaskDtoByMode
(
mode
);
TaskDto
dto
=
getTaskDtoByMode
(
mode
);
if
(
dto
==
null
)
{
if
(
dto
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
}
//判断有没有生成任务
//判断有没有生成任务
LiteOrder
order
=
getOrderByMode
(
mode
);
LiteOrder
order
=
getOrderByMode
(
mode
);
if
(
order
==
null
)
{
if
(
order
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
}
List
<
LiteOrderItem
>
liteOrderItemList
=
order
.
getOrderItems
();
try
{
List
<
LiteOrderItem
>
orderItems
=
new
ArrayList
<>();
//开始查询是否可以出库
boolean
canClose
=
true
;
String
msg
=
liteOrderCache
.
preTaskCheckOut
(
order
,
dto
.
getOperationId
(),
new
ArrayList
<>(),
true
);
for
(
LiteOrderItem
orderItem
:
if
(
ObjectUtil
.
isNotEmpty
(
msg
))
{
liteOrderItemList
)
{
return
ResultBean
.
newErrorResult
(-
1
,
msg
,
"操作失败"
);
if
(
orderItem
.
getStatus
()
==
OrderItemStatus
.
notify_fail
)
{
String
id
=
orderItem
.
getId
();
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
is
(
id
)));
if
(
dataLogList
!=
null
&&
!
dataLogList
.
isEmpty
())
{
log
.
info
(
"retry: ["
+
order
.
getOrderNo
()
+
"] ["
+
orderItem
.
getRi
()
+
"] 重发API007 "
);
String
msg
=
MicronApi
.
Api007
(
order
.
getOrderNo
(),
order
.
getId
(),
dataLogList
);
if
(
ObjectUtil
.
isEmpty
(
msg
))
{
orderItem
.
setStatus
(
OrderItemStatus
.
notify_success
);
}
else
{
orderItem
.
setExecutFailReason
(
msg
);
orderItem
.
setStatus
(
OrderItemStatus
.
notify_fail
);
canClose
=
false
;
}
liteOrderItemManager
.
save
(
orderItem
);
}
}
else
if
(
orderItem
.
getStatus
()==
OrderItemStatus
.
executing
){
canClose
=
false
;
}
}
orderItems
.
add
(
orderItem
);
}
catch
(
Exception
ex
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
}
order
.
setOrderItems
(
orderItems
);
if
(
canClose
){
//可以关闭工单
CloseOrder
(
order
);
}
else
{
liteOrderCache
.
addOrderToMap
(
order
);
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
// List<LiteOrderItem> liteOrderItemList=order.getOrderItems();
// List<LiteOrderItem> orderItems = new ArrayList<>();
// boolean canClose=true;
// for (LiteOrderItem orderItem :
// liteOrderItemList) {
// if (orderItem.getStatus() == OrderItemStatus.notify_fail) {
// String id = orderItem.getId();
// List<DataLog> dataLogList = dataLogManager.findByQuery(new Query(Criteria.where("subSourceId").is(id)));
// if (dataLogList != null && !dataLogList.isEmpty()) {
//
// log.info("retry: [" + order.getOrderNo() + "] [" + orderItem.getRi() + "] 重发API007 ");
// String msg = MicronApi.Api007(order.getOrderNo(), order.getId(), dataLogList);
// if (ObjectUtil.isEmpty(msg)) {
// orderItem.setStatus(OrderItemStatus.notify_success);
// } else {
// orderItem.setExecutFailReason(msg);
// orderItem.setStatus(OrderItemStatus.notify_fail);
// canClose=false;
// }
// liteOrderItemManager.save(orderItem);
//
// }
// }else if(orderItem.getStatus()==OrderItemStatus.executing){
// canClose=false;
// }
// orderItems.add(orderItem);
// }
// order.setOrderItems(orderItems);
// if(canClose){
// //可以关闭工单
// CloseOrder(order);
// }else{
//
// liteOrderCache.addOrderToMap(order);
// }
// return ResultBean.newOkResult("");
}
}
...
...
src/main/resources/messages.properties
查看文件 @
d3ed66f
...
@@ -360,6 +360,7 @@ smfcore.paretoChart=\u5E15\u7D2F\u6258\u56FE
...
@@ -360,6 +360,7 @@ smfcore.paretoChart=\u5E15\u7D2F\u6258\u56FE
smfcore.selfAudit.hasOutTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfcore.selfAudit.hasOutTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfcore.error.barcode.hastask
=
\u6761\u7801
[0]
\u
5DF2
\u6709\u5165\u
5E93
\u
4EFB
\u
52A1
smfcore.error.barcode.hastask
=
\u6761\u7801
[0]
\u
5DF2
\u6709\u5165\u
5E93
\u
4EFB
\u
52A1
smfcore.error.barcode.hasOutTask
=
\u
5E8F
\u5217\u
53F7[0]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
\u
FF0C
\u
51FA
\u
5E93
\u
524D
\u
4E0D
\u
5F97
\u5165\u
5E93
\u
76F8
\u
540C
\u
5E8F
\u5217\u
53F7
\u7269\u6599
smfcore.error.barcode.hasOutTask
=
\u
5E8F
\u5217\u
53F7[0]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
\u
FF0C
\u
51FA
\u
5E93
\u
524D
\u
4E0D
\u
5F97
\u5165\u
5E93
\u
76F8
\u
540C
\u
5E8F
\u5217\u
53F7
\u7269\u6599
smfcore.error.noRetryReel=No material found to retry
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1}
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
...
...
src/main/resources/messages_en_US.properties
查看文件 @
d3ed66f
...
@@ -358,4 +358,5 @@ smfcore.api.toXray={0}Need to Xray
...
@@ -358,4 +358,5 @@ smfcore.api.toXray={0}Need to Xray
smfcore.paretoChart
=
Pareto chart
smfcore.paretoChart
=
Pareto chart
smfcore.selfAudit.hasOutTask
=
The location [{0}] already has a release task
smfcore.selfAudit.hasOutTask
=
The location [{0}] already has a release task
smfcore.error.barcode.hastask
=
Serial No.(S)[0] already have storage task
smfcore.error.barcode.hastask
=
Serial No.(S)[0] already have storage task
smfcore.error.barcode.hasOutTask
=
Serial No.(S)[0] already have retrieval task, cannot store same Serial No. material before retrieval finish
\ No newline at end of file
\ No newline at end of file
smfcore.error.barcode.hasOutTask
=
Serial No.(S)[0] already have retrieval task, cannot store same Serial No. material before retrieval finish
smfcore.error.noRetryReel
=
No material found to retry
\ No newline at end of file
\ No newline at end of file
src/main/resources/messages_ja_JP.properties
查看文件 @
d3ed66f
...
@@ -353,4 +353,5 @@ smfcore.micron.apiClose=Not yet open
...
@@ -353,4 +353,5 @@ smfcore.micron.apiClose=Not yet open
smfcore.paretoChart
=
\u
30D1
\u
30EC
\u
30FC
\u
30C8
\u
56F3
smfcore.paretoChart
=
\u
30D1
\u
30EC
\u
30FC
\u
30C8
\u
56F3
smfcore.selfAudit.hasOutTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfcore.selfAudit.hasOutTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfcore.error.barcode.hastask
=
Serial No.(S)[0] already have storage task
smfcore.error.barcode.hastask
=
Serial No.(S)[0] already have storage task
smfcore.error.barcode.hasOutTask
=
Serial No.(S)[0] already have retrieval task, cannot store same Serial No. material before retrieval finish
\ No newline at end of file
\ No newline at end of file
smfcore.error.barcode.hasOutTask
=
Serial No.(S)[0] already have retrieval task, cannot store same Serial No. material before retrieval finish
smfcore.error.noRetryReel
=
No material found to retry
\ No newline at end of file
\ No newline at end of file
src/main/resources/messages_zh_CN.properties
查看文件 @
d3ed66f
...
@@ -353,4 +353,5 @@ smfcore.micron.apiClose=API\u529F\u80FD\u672A\u5F00\u653E
...
@@ -353,4 +353,5 @@ smfcore.micron.apiClose=API\u529F\u80FD\u672A\u5F00\u653E
smfcore.paretoChart
=
\u
5E15
\u
7D2F
\u6258\u
56FE
smfcore.paretoChart
=
\u
5E15
\u
7D2F
\u6258\u
56FE
smfcore.selfAudit.hasOutTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfcore.selfAudit.hasOutTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfcore.error.barcode.hastask
=
Serial No.(S)[0] already have storage task
smfcore.error.barcode.hastask
=
Serial No.(S)[0] already have storage task
smfcore.error.barcode.hasOutTask
=
\u
5E8F
\u5217\u
53F7[0]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
\u
FF0C
\u
51FA
\u
5E93
\u
524D
\u
4E0D
\u
5F97
\u5165\u
5E93
\u
76F8
\u
540C
\u
5E8F
\u5217\u
53F7
\u7269\u6599
\ No newline at end of file
\ No newline at end of file
smfcore.error.barcode.hasOutTask
=
\u
5E8F
\u5217\u
53F7[0]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
\u
FF0C
\u
51FA
\u
5E93
\u
524D
\u
4E0D
\u
5F97
\u5165\u
5E93
\u
76F8
\u
540C
\u
5E8F
\u5217\u
53F7
\u7269\u6599
smfcore.error.noRetryReel
=
\u
6CA1
\u6709\u
53EF
\u
4EE5
\u
91CD
\u
8BD5
\u7684\u7269\u6599
\ No newline at end of file
\ No newline at end of file
src/main/resources/messages_zh_TW.properties
查看文件 @
d3ed66f
...
@@ -354,4 +354,5 @@ smfcore.api.fail={0} \u83B7\u53D6\u6570\u636E\u5931\u8D25
...
@@ -354,4 +354,5 @@ smfcore.api.fail={0} \u83B7\u53D6\u6570\u636E\u5931\u8D25
smfcore.micron.apiClose
=
API
\u
529F
\u
80FD
\u
672A
\u
5F00
\u
653E
smfcore.micron.apiClose
=
API
\u
529F
\u
80FD
\u
672A
\u
5F00
\u
653E
smfcore.paretoChart
=
\u
5E15
\u
7D2F
\u6258\u5716
smfcore.paretoChart
=
\u
5E15
\u
7D2F
\u6258\u5716
smfcore.selfAudit.hasOutTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfcore.selfAudit.hasOutTask
=
\u
5E93
\u
4F4D[{0}]
\u
5DF2
\u6709\u
51FA
\u
5E93
\u
4EFB
\u
52A1
smfcore.error.barcode.hasOutTask
=
\u
5E8F
\u5217\u
865F[0]
\u
5DF2
\u6709\u
51FA
\u
5EAB
\u
4EFB
\u
52D9
\u
FF0C
\u
51FA
\u
5EAB
\u
524D
\u
4E0D
\u
5F97
\u5165\u
5EAB
\u
76F8
\u
540C
\u
5E8F
\u5217\u
865F
\u7269\u6599
\ No newline at end of file
\ No newline at end of file
smfcore.error.barcode.hasOutTask
=
\u
5E8F
\u5217\u
865F[0]
\u
5DF2
\u6709\u
51FA
\u
5EAB
\u
4EFB
\u
52D9
\u
FF0C
\u
51FA
\u
5EAB
\u
524D
\u
4E0D
\u
5F97
\u5165\u
5EAB
\u
76F8
\u
540C
\u
5E8F
\u5217\u
865F
\u7269\u6599
smfcore.error.noRetryReel
=
\u
6C92
\u6709\u
53EF
\u
4EE5
\u
91CD
\u
8A66
\u7684\u7269\u6599
\ No newline at end of file
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论