Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 389298f7
由
LN
编写于
2024-10-29 11:26:53 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
abort时,已结束的任务需要调API002或API007通知镁光
1 个父辈
eca2cc90
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
265 行增加
和
122 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
src/main/java/com/neotel/smfcore/custom/micron1053/loading/util/LoadingUtil.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/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
389298f
...
@@ -314,6 +314,8 @@ public class LiteOrderCache {
...
@@ -314,6 +314,8 @@ public class LiteOrderCache {
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
if
(
orderItem
.
getId
().
equals
(
task
.
getSubSourceId
()))
{
if
(
orderItem
.
getId
().
equals
(
task
.
getSubSourceId
()))
{
orderItem
.
setStatus
(
OrderItemStatus
.
cancel
);
orderItem
.
setStatus
(
OrderItemStatus
.
cancel
);
}
else
if
(
orderItem
.
getSelectItems
().
size
()
>=
0
)
{
orderItem
.
updateSelItemS
(
task
.
getSubSourceId
(),
OrderItemStatus
.
cancel
,
"Cancel"
);
}
}
items
.
add
(
orderItem
);
items
.
add
(
orderItem
);
}
}
...
@@ -331,7 +333,22 @@ public class LiteOrderCache {
...
@@ -331,7 +333,22 @@ public class LiteOrderCache {
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
())
{
boolean
isItemTask
=
false
;
if
(
liteOrderItem
.
getId
().
equals
(
orderItemId
))
{
if
(
liteOrderItem
.
getId
().
equals
(
orderItemId
))
{
isItemTask
=
true
;
liteOrderItem
.
setStatus
(
OrderItemStatus
.
finish
);
}
else
{
boolean
result
=
liteOrderItem
.
updateSelItemS
(
task
.
getSubSourceId
(),
OrderItemStatus
.
finish
,
""
);
if
(
result
)
{
isItemTask
=
true
;
//如果全部完成,更改任务状态为完成
long
notEndCount
=
liteOrderItem
.
selectItems
.
stream
().
filter
(
a
->
a
.
getStatus
().
equals
(
OrderItemStatus
.
finish
)
==
false
).
count
();
if
(
notEndCount
<=
0
)
{
liteOrderItem
.
setStatus
(
OrderItemStatus
.
finish
);
}
}
}
if
(
isItemTask
)
{
log
.
info
(
"工单["
+
orderNo
+
"]的任务"
+
task
.
getPartNumber
()
+
"["
+
task
.
getBarcode
()
+
"]出库完成,已完成数量+1="
+
order
.
getFinishedReelCount
()
+
"/"
+
order
.
getTaskReelCount
());
log
.
info
(
"工单["
+
orderNo
+
"]的任务"
+
task
.
getPartNumber
()
+
"["
+
task
.
getBarcode
()
+
"]出库完成,已完成数量+1="
+
order
.
getFinishedReelCount
()
+
"/"
+
order
.
getTaskReelCount
());
//更新对应条目的已出库数量和出库盘数
//更新对应条目的已出库数量和出库盘数
liteOrderItem
.
setOutNum
(
liteOrderItem
.
getOutNum
()
+
task
.
getNum
());
liteOrderItem
.
setOutNum
(
liteOrderItem
.
getOutNum
()
+
task
.
getNum
());
...
@@ -340,29 +357,7 @@ public class LiteOrderCache {
...
@@ -340,29 +357,7 @@ public class LiteOrderCache {
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
);
//通知micron
/*boolean isSuccess = MicronApi.Api007(order.getOrderNo(), task.getId(), Arrays.asList(task));
if (!isSuccess){
liteOrderItem.setNotifySuccess(false);
}*/
liteOrderItem
=
liteOrderItemManager
.
save
(
liteOrderItem
);
liteOrderItem
=
liteOrderItemManager
.
save
(
liteOrderItem
);
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) {
// Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes();
// int barcodeRemainNum = liteOrderItem.getOutNum() - totalNeedNum.intValue();
// if (barcodeRemainNum < 0) {
// barcodeRemainNum = 0;
// }
// barcode.setAmount(barcodeRemainNum);
// log.info("条码[" + task.getBarcode() + "]从工单出库,更改数量为:" + barcodeRemainNum);
// try {
// barcodeManager.save(barcode);
// } catch (ValidateException e) {
// e.printStackTrace();
// }
// }
}
}
items
.
add
(
liteOrderItem
);
items
.
add
(
liteOrderItem
);
}
}
...
@@ -371,104 +366,102 @@ public class LiteOrderCache {
...
@@ -371,104 +366,102 @@ 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
msg
=
MicronApi
.
Api007SingleReel
(
order
.
getOperationId
(),
task
.
getLocInfo
(),
task
);
String
newS
=
ObjectUtil
.
isEmpty
(
msg
)
?
OrderItemStatus
.
notify_success
:
OrderItemStatus
.
notify_fail
;
String
locInfo
=
task
.
getLocInfo
();
items
=
new
ArrayList
<>();
List
<
String
>
itemIdList
=
new
ArrayList
<>();
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
itemIdList
.
add
(
task
.
getSubSourceId
());
boolean
isItemTask
=
false
;
// for (LiteOrderItem item : items) {
if
(
liteOrderItem
.
getId
().
equals
(
orderItemId
))
{
// if (locInfo.contains(item.getLocInfo())) {
isItemTask
=
true
;
// itemIdList.add(item.getId());
liteOrderItem
.
setStatus
(
newS
);
// }
liteOrderItem
.
setExecutFailReason
(
msg
);
// }
}
else
{
boolean
result
=
liteOrderItem
.
updateSelItemS
(
task
.
getSubSourceId
(),
newS
,
msg
);
//先改为单盘上传
if
(
result
)
{
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
in
(
itemIdList
)));
isItemTask
=
true
;
if
(
dataLogList
!=
null
&&
!
dataLogList
.
isEmpty
())
{
//如果全部完成,更改任务状态为完成
String
msg
=
MicronApi
.
Api007
(
order
.
getOperationId
(),
task
.
getLocInfo
(),
dataLogList
);
long
notEndCount
=
liteOrderItem
.
selectItems
.
stream
().
filter
(
a
->
a
.
getStatus
().
equals
(
OrderItemStatus
.
notify_success
)
==
false
).
count
();
for
(
LiteOrderItem
item
:
items
)
{
if
(
notEndCount
<=
0
)
{
if
(
itemIdList
.
contains
(
item
.
getId
()))
{
liteOrderItem
.
setStatus
(
OrderItemStatus
.
notify_success
);
if
(
ObjectUtil
.
isEmpty
(
msg
))
{
item
.
setStatus
(
OrderItemStatus
.
notify_success
);
}
else
{
item
.
setExecutFailReason
(
msg
);
item
.
setStatus
(
OrderItemStatus
.
notify_fail
);
item
.
setExecutFailReason
(
msg
);
}
}
}
}
liteOrderItemManager
.
save
(
item
);
}
if
(
isItemTask
)
{
log
.
info
(
"工单["
+
orderNo
+
"]的任务"
+
task
.
getPartNumber
()
+
"["
+
task
.
getBarcode
()
+
"]完成,API007结果:"
+
msg
+
",更新状态="
+
newS
);
liteOrderItem
=
liteOrderItemManager
.
save
(
liteOrderItem
);
}
}
order
.
setOrderItems
(
items
);
order
.
setOrderItems
(
items
);
}
}
}
if
(!
order
.
isClosed
())
{
if
(!
order
.
isClosed
())
{
//工单未关闭的话,检查状态,全部都出完进行关闭
//工单未关闭的话,检查状态,全部都出完进行关闭
boolean
closed
=
true
;
boolean
closed
=
true
;
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
if
(!
liteOrderItem
.
isOutFinished
())
{
if
(!
liteOrderItem
.
isOutFinished
())
{
closed
=
false
;
break
;
}
if
(
closed
)
{
if
(
StringUtils
.
isBlank
(
liteOrderItem
.
getRi
())
&&
(
StringUtils
.
isNotBlank
(
liteOrderItem
.
getPn
())
||
StringUtils
.
isNotBlank
(
liteOrderItem
.
getMpn
())))
{
if
(!
liteOrderItem
.
isOutReelFinished
())
{
closed
=
false
;
break
;
}
}
}
//判断是否发送成功
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
()))
{
if
(
liteOrderItem
.
getStatus
()
==
OrderItemStatus
.
notify_fail
||
liteOrderItem
.
getStatus
()==
OrderItemStatus
.
executFail
)
{
log
.
info
(
" liteOrderItem ,PN="
+
liteOrderItem
.
getPn
()+
",ri="
+
liteOrderItem
.
getRi
()+
",当前状态:"
+
liteOrderItem
.
getStatus
()+
",暂不关闭工单"
);
closed
=
false
;
closed
=
false
;
break
;
break
;
}
}
if
(
liteOrderItem
.
getSelectItems
()!=
null
){
if
(
closed
)
{
for
(
LiteOrderItem
item
:
if
(
StringUtils
.
isBlank
(
liteOrderItem
.
getRi
())
&&
(
StringUtils
.
isNotBlank
(
liteOrderItem
.
getPn
())
||
StringUtils
.
isNotBlank
(
liteOrderItem
.
getMpn
())))
{
liteOrderItem
.
getSelectItems
())
{
if
(!
liteOrderItem
.
isOutReelFinished
())
{
if
(
item
.
getStatus
()
==
OrderItemStatus
.
notify_fail
||
item
.
getStatus
()==
OrderItemStatus
.
executFail
)
{
log
.
info
(
" item ,PN="
+
item
.
getPn
()+
",ri="
+
item
.
getRi
()+
",当前状态:"
+
item
.
getStatus
()+
",暂不关闭工单"
);
closed
=
false
;
closed
=
false
;
break
;
break
;
}
}
}
}
}
}
if
(!
closed
){
//判断是否发送成功
break
;
if
(
ObjectUtil
.
isNotEmpty
(
order
.
getMode
()))
{
if
(
liteOrderItem
.
getStatus
()
==
OrderItemStatus
.
notify_fail
||
liteOrderItem
.
getStatus
()
==
OrderItemStatus
.
executFail
)
{
log
.
info
(
" liteOrderItem ,PN="
+
liteOrderItem
.
getPn
()
+
",ri="
+
liteOrderItem
.
getRi
()
+
",当前状态:"
+
liteOrderItem
.
getStatus
()
+
",暂不关闭工单"
);
closed
=
false
;
break
;
}
if
(
liteOrderItem
.
getSelectItems
()
!=
null
)
{
for
(
LiteOrderItem
item
:
liteOrderItem
.
getSelectItems
())
{
if
(
item
.
getStatus
()
==
OrderItemStatus
.
notify_fail
||
item
.
getStatus
()
==
OrderItemStatus
.
executFail
||
item
.
getStatus
()
==
OrderItemStatus
.
executing
)
{
log
.
info
(
" item ,PN="
+
item
.
getPn
()
+
",ri="
+
item
.
getRi
()
+
",当前状态:"
+
item
.
getStatus
()
+
",暂不关闭工单"
);
closed
=
false
;
break
;
}
}
}
if
(!
closed
)
{
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,更改action=COMPLETE"
);
log
.
info
(
" mode="
+
order
.
getMode
()
+
"的出库已结束,清空 key="
+
key
+
" 的cache,更改action=COMPLETE"
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
COMPLETE
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
COMPLETE
);
}
clearOrderLock
(
order
);
}
}
clearOrderLock
(
order
);
}
}
}
else
{
log
.
error
(
"工单["
+
orderNo
+
"]的任务["
+
task
.
getBarcode
()
+
"]完成时,状态为:"
+
task
.
getStatus
());
}
}
}
else
{
log
.
error
(
"工单["
+
orderNo
+
"]的任务["
+
task
.
getBarcode
()
+
"]完成时,状态为:"
+
task
.
getStatus
());
}
if
(
order
.
getFinishedReelCount
()
>=
order
.
getTaskReelCount
()&&
ObjectUtil
.
isEmpty
(
order
.
getMode
()))
{
if
(
order
.
getFinishedReelCount
()
>=
order
.
getTaskReelCount
()
&&
ObjectUtil
.
isEmpty
(
order
.
getMode
()))
{
log
.
info
(
"工单["
+
orderNo
+
"]的出库任务已完成,共出库:"
+
order
.
getFinishedReelCount
()
+
" 盘"
);
log
.
info
(
"工单["
+
orderNo
+
"]的出库任务已完成,共出库:"
+
order
.
getFinishedReelCount
()
+
" 盘"
);
finishedOrderTasks
(
order
);
finishedOrderTasks
(
order
);
}
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
orderNo
,
order
);
}
else
{
log
.
error
(
"完成任务时,未找到工单["
+
orderNo
+
"]信息"
);
}
}
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
orderNo
,
order
);
}
else
{
log
.
error
(
"完成任务时,未找到工单["
+
orderNo
+
"]信息"
);
}
}
}
}
}
}
}
}
private
LiteOrder
checkoutAgain
(
DataLog
task
,
LiteOrder
order
)
{
private
LiteOrder
checkoutAgain
(
DataLog
task
,
LiteOrder
order
)
{
try
{
try
{
//出库任务,如果是工单任务,如果此料仓离线,需要补发一盘
//出库任务,如果是工单任务,如果此料仓离线,需要补发一盘
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
查看文件 @
389298f
package
com
.
neotel
.
smfcore
.
core
.
order
.
service
.
po
;
package
com
.
neotel
.
smfcore
.
core
.
order
.
service
.
po
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.base.BasePo
;
import
com.neotel.smfcore.common.base.BasePo
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.mongodb.core.index.Indexed
;
import
org.springframework.data.mongodb.core.index.Indexed
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
org.springframework.data.mongodb.core.mapping.Document
;
...
@@ -13,6 +15,7 @@ import java.util.Map;
...
@@ -13,6 +15,7 @@ import java.util.Map;
@Data
@Data
@Document
@Document
@Slf4j
public
class
LiteOrderItem
extends
BasePo
implements
Serializable
,
Comparable
<
LiteOrderItem
>
{
public
class
LiteOrderItem
extends
BasePo
implements
Serializable
,
Comparable
<
LiteOrderItem
>
{
/**
/**
* 物料编号
* 物料编号
...
@@ -120,6 +123,26 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
...
@@ -120,6 +123,26 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
public
List
<
LiteOrderItem
>
selectItems
;
public
List
<
LiteOrderItem
>
selectItems
;
public
boolean
updateSelItemS
(
String
subItemId
,
String
selItemStatus
,
String
reason
)
{
try
{
if
(
selectItems
==
null
||
selectItems
.
size
()
<=
0
)
{
return
false
;
}
for
(
int
i
=
0
;
i
<
selectItems
.
size
();
i
++)
{
if
(
selectItems
.
get
(
i
).
getId
().
equals
(
subItemId
))
{
selectItems
.
get
(
i
).
setStatus
(
selItemStatus
);
if
(
ObjectUtil
.
isNotEmpty
(
reason
))
{
selectItems
.
get
(
i
).
setExecutFailReason
(
reason
);
}
return
true
;
}
}
}
catch
(
Exception
ex
)
{
log
.
error
(
"updateSelItemS error :"
+
ex
.
toString
());
}
return
false
;
}
/**
/**
* 出库是否满足要求,已出库数量大于需求数量
* 出库是否满足要求,已出库数量大于需求数量
*/
*/
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
查看文件 @
389298f
...
@@ -36,7 +36,7 @@ public class MicronApi {
...
@@ -36,7 +36,7 @@ public class MicronApi {
public
static
boolean
Debug
=
fals
e
;
public
static
boolean
Debug
=
tru
e
;
private
static
MicronConfig
config
;
private
static
MicronConfig
config
;
@Autowired
@Autowired
...
@@ -568,9 +568,10 @@ public class MicronApi {
...
@@ -568,9 +568,10 @@ public class MicronApi {
}
}
public
static
String
Api007
(
String
operationId
,
String
rfid
,
List
<
DataLog
>
dataLogList
)
{
public
static
Map
<
String
,
String
>
Api007
(
String
operationId
,
String
rfid
,
List
<
DataLog
>
dataLogList
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_007
);
String
url
=
config
.
getUrl
(
config
.
api_name_007
);
String
errMsg
=
""
;
String
errMsg
=
""
;
Map
<
String
,
String
>
resultMap
=
new
HashMap
<>();
try
{
try
{
String
jobId
=
operationId
+
"_"
+
rfid
;
String
jobId
=
operationId
+
"_"
+
rfid
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
...
@@ -595,7 +596,7 @@ public class MicronApi {
...
@@ -595,7 +596,7 @@ public class MicronApi {
String
paramStr
=
JsonUtil
.
toJsonStr
(
paramMap
);
String
paramStr
=
JsonUtil
.
toJsonStr
(
paramMap
);
log
.
info
(
"调用MES接口 API007: url="
+
url
+
",body="
+
paramStr
+
""
);
log
.
info
(
"调用MES接口 API007: url="
+
url
+
",body="
+
paramStr
+
""
);
Map
<
String
,
String
>
resultMap
=
new
HashMap
<>();
MicronResult
micronResult
=
HttpHelper
.
postMicronJson
(
url
,
paramMap
);
MicronResult
micronResult
=
HttpHelper
.
postMicronJson
(
url
,
paramMap
);
errMsg
=
getDErrorMsg
(
micronResult
);
errMsg
=
getDErrorMsg
(
micronResult
);
// if (micronResult.isOk()&& micronResult.statusIsSuccess()) {
// if (micronResult.isOk()&& micronResult.statusIsSuccess()) {
...
@@ -615,21 +616,84 @@ public class MicronApi {
...
@@ -615,21 +616,84 @@ public class MicronApi {
}
}
}
}
//需要解析
//需要解析
return
""
;
return
resultMap
;
}
else
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
))
{
}
else
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
))
{
log
.
info
(
"API007 ,接口通信失败:"
+
errMsg
);
log
.
info
(
"API007 ,接口通信失败:"
+
errMsg
);
resultMap
.
put
(
"msg"
,
errMsg
);
// throw new ApiException(errMsg);
}
else
{
log
.
info
(
"API007 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API007 : "
+
micronResult
.
getResponseData
()});
}
}
catch
(
ApiException
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
resultMap
.
put
(
"msg"
,
e
.
getMessage
());
// return e.getMessage();
}
return
resultMap
;
}
public
static
String
Api007SingleReel
(
String
operationId
,
String
rfid
,
DataLog
dataLog
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_007
);
String
errMsg
=
""
;
try
{
String
jobId
=
operationId
+
"_"
+
rfid
;
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"jobId"
,
jobId
);
paramMap
.
put
(
"operationId"
,
operationId
);
List
<
Map
<
String
,
Object
>>
materialList
=
new
ArrayList
<>();
Map
<
String
,
Object
>
materialsMap
=
new
HashMap
<>();
materialsMap
.
put
(
"location"
,
dataLog
.
getPosName
());
materialsMap
.
put
(
"towerId"
,
dataLog
.
getStorageId
());
materialsMap
.
put
(
"materialStatus"
,
"Available"
);
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
dataLog
.
getBarcode
());
if
(
barcode
!=
null
)
{
materialsMap
.
put
(
"material"
,
AMaterialBean
.
toBean
(
barcode
).
toMap
());
}
materialList
.
add
(
materialsMap
);
paramMap
.
put
(
"dispatchedMaterials"
,
materialList
);
String
paramStr
=
JsonUtil
.
toJsonStr
(
paramMap
);
log
.
info
(
"调用MES接口 API007: url="
+
url
+
",body="
+
paramStr
+
""
);
Map
<
String
,
String
>
resultMap
=
new
HashMap
<>();
MicronResult
micronResult
=
HttpHelper
.
postMicronJson
(
url
,
paramMap
);
errMsg
=
getDErrorMsg
(
micronResult
);
// if (micronResult.isOk()&& micronResult.statusIsSuccess()) {
if
(
micronResult
.
isOk
())
{
List
<
Object
>
resultList
=
micronResult
.
getResult
(
"materialStatusList"
);
for
(
Object
Obj
:
resultList
)
{
MaterialStatus
s
=
JsonUtil
.
toObj
(
JsonUtil
.
toJsonStr
(
Obj
),
MaterialStatus
.
class
);
// if (s.getMaterialStatus().toUpperCase().equals("SUCCESS")) {
if
(
s
.
isSuccess
())
{
resultMap
.
put
(
s
.
getSerialNum
(),
"true"
);
return
""
;
}
else
if
(
ObjectUtil
.
isNotEmpty
(
s
.
getDescription
()))
{
resultMap
.
put
(
s
.
getSerialNum
(),
s
.
getDescription
());
return
s
.
getDescription
();
}
}
}
else
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
))
{
log
.
info
(
"API007 ,接口通信失败:"
+
errMsg
);
return
errMsg
;
return
errMsg
;
// 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 : "
+
micronResult
.
getResponseData
()});
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API007 : "
+
micronResult
.
getResponseData
()});
}
}
}
catch
(
ApiException
e
)
{
}
catch
(
ApiException
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
log
.
error
(
url
+
"出错"
,
e
);
return
e
.
getMessage
();
return
e
.
getMessage
();
}
}
return
MessageUtils
.
getText
(
"smfcore.api.fail"
,
new
String
[]{
"API007 "
},
MessageUtils
.
getDefaultLocal
(),
"{0} Failed to get data"
);
}
}
public
static
String
Api008
(
String
serialNum
,
int
qty
,
int
newQty
)
throws
ApiException
{
public
static
String
Api008
(
String
serialNum
,
int
qty
,
int
newQty
)
throws
ApiException
{
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/loading/util/LoadingUtil.java
查看文件 @
389298f
...
@@ -397,6 +397,17 @@ public class LoadingUtil {
...
@@ -397,6 +397,17 @@ public class LoadingUtil {
}
}
private
boolean
PushToMes
(
String
rfid
,
InList
inList
,
List
<
StoragePos
>
posList
)
{
private
boolean
PushToMes
(
String
rfid
,
InList
inList
,
List
<
StoragePos
>
posList
)
{
for
(
InListItem
item
:
inList
.
getInListItems
())
{
if
(
item
.
getRfid
().
equals
(
rfid
)
&&
item
.
getState
()
==
INITEM_STATUS
.
Cancel
&&
ObjectUtil
.
isNotEmpty
(
item
.
getRi
())&&
ObjectUtil
.
isNotEmpty
(
item
.
getPosName
()))
{
StoragePos
pos
=
storagePosManager
.
getByPosName
(
item
.
getPosName
());
if
(
pos
!=
null
&&
pos
.
getBarcode
()!=
null
&&
pos
.
getBarcode
().
getBarcode
().
equals
(
item
.
getRi
()))
{
log
.
info
(
"入库单["
+
inList
.
getName
()
+
"],rfid ["
+
rfid
+
"],posName["
+
item
.
getPosName
()
+
"],ri["
+
item
.
getRi
()
+
"],任务取消但是入库完成,也需要发送API002"
);
posList
.
add
(
pos
);
}
}
}
Map
<
String
,
String
>
resultMap
=
MicronApi
.
API002
(
rfid
,
inList
.
getOperationId
(),
posList
);
Map
<
String
,
String
>
resultMap
=
MicronApi
.
API002
(
rfid
,
inList
.
getOperationId
(),
posList
);
List
<
InListItem
>
inListItems
=
new
ArrayList
<>();
List
<
InListItem
>
inListItems
=
new
ArrayList
<>();
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
查看文件 @
389298f
...
@@ -8,6 +8,7 @@ import com.neotel.smfcore.common.utils.FileUtil;
...
@@ -8,6 +8,7 @@ import com.neotel.smfcore.common.utils.FileUtil;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.inList.service.po.InListItem
;
import
com.neotel.smfcore.core.inList.service.po.InListItem
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
...
@@ -667,6 +668,39 @@ private IStoragePosManager storagePosManager;
...
@@ -667,6 +668,39 @@ private IStoragePosManager storagePosManager;
}
}
private
void
CloseOrder
(
LiteOrder
order
)
{
private
void
CloseOrder
(
LiteOrder
order
)
{
try
{
//如果有已执行完成,未发送的物料,还需要发送过去
List
<
LiteOrderItem
>
liteOrderItemList
=
order
.
getOrderItems
();
List
<
DataLog
>
needSendList
=
new
ArrayList
<>();
for
(
LiteOrderItem
orderItem
:
liteOrderItemList
)
{
if
(
orderItem
.
getSelectItems
()
==
null
)
{
continue
;
}
for
(
LiteOrderItem
sItem
:
orderItem
.
getSelectItems
())
{
if
(
sItem
.
getStatus
()
==
OrderItemStatus
.
notify_fail
||
sItem
.
getStatus
()
==
OrderItemStatus
.
cancel
||
sItem
.
getStatus
()
==
OrderItemStatus
.
executing
)
{
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
is
(
sItem
.
getId
())).
addCriteria
(
Criteria
.
where
(
"status"
).
is
(
OP_STATUS
.
FINISHED
.
name
())));
if
(
dataLogList
.
size
()
>
0
)
{
needSendList
.
addAll
(
dataLogList
);
}
}
}
}
if
(
needSendList
.
size
()
>
0
)
{
Map
<
String
,
String
>
resultM
=
MicronApi
.
Api007
(
order
.
getOperationId
(),
needSendList
.
get
(
0
).
getLocInfo
(),
needSendList
);
log
.
info
(
" abort mode ["
+
order
.
getMode
()
+
"] 共"
+
needSendList
.
size
()
+
" 已出库完成,调用API007 ,工单已经要关闭,不再更新工单状态"
);
}
}
catch
(
Exception
ex
)
{
log
.
error
(
"关闭工单前调用API007出错:"
+
ex
.
toString
());
}
order
.
setStatus
(
LITEORDER_STATUS
.
CLOSED
);
order
.
setStatus
(
LITEORDER_STATUS
.
CLOSED
);
order
.
setClosed
(
true
);
order
.
setClosed
(
true
);
liteOrderManager
.
save
(
order
);
liteOrderManager
.
save
(
order
);
...
@@ -680,7 +714,7 @@ private IStoragePosManager storagePosManager;
...
@@ -680,7 +714,7 @@ private IStoragePosManager storagePosManager;
log
.
info
(
"abort mode="
+
order
.
getMode
()
+
" 清空 key="
+
key
+
" 的cache,更改action=ABORT"
);
log
.
info
(
"abort mode="
+
order
.
getMode
()
+
" 清空 key="
+
key
+
" 的cache,更改action=ABORT"
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
ABORT
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
ABORT
);
}
}
liteOrderCache
.
clearOrderLock
(
order
);
liteOrderCache
.
clearOrderLock
(
order
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
查看文件 @
389298f
...
@@ -349,8 +349,6 @@ public class MicronPreTaskController {
...
@@ -349,8 +349,6 @@ public class MicronPreTaskController {
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
}
List
<
LiteOrderItem
>
liteOrderItemList
=
order
.
getOrderItems
();
List
<
LiteOrderItem
>
liteOrderItemList
=
order
.
getOrderItems
();
...
@@ -358,7 +356,7 @@ public class MicronPreTaskController {
...
@@ -358,7 +356,7 @@ public class MicronPreTaskController {
for
(
LiteOrderItem
orderItem
:
for
(
LiteOrderItem
orderItem
:
liteOrderItemList
)
{
liteOrderItemList
)
{
if
(
orderItem
.
getStatus
()
==
OrderItemStatus
.
notify_fail
)
{
if
(
orderItem
.
getStatus
()
==
OrderItemStatus
.
executing
)
{
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
is
(
orderItem
.
getId
())));
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
is
(
orderItem
.
getId
())));
...
@@ -366,7 +364,6 @@ public class MicronPreTaskController {
...
@@ -366,7 +364,6 @@ public class MicronPreTaskController {
for
(
DataLog
dataLog
:
dataLogList
for
(
DataLog
dataLog
:
dataLogList
)
{
)
{
if
(
dataLog
.
isExecuting
())
{
if
(
dataLog
.
isExecuting
())
{
taskService
.
cancelTask
(
dataLog
.
getId
());
taskService
.
cancelTask
(
dataLog
.
getId
());
log
.
info
(
"abort 终止出库,mode="
+
mode
+
",取消正在执行的出库任务:barcode="
+
dataLog
.
getBarcode
()
+
",posName="
+
dataLog
.
getPosName
());
log
.
info
(
"abort 终止出库,mode="
+
mode
+
",取消正在执行的出库任务:barcode="
+
dataLog
.
getBarcode
()
+
",posName="
+
dataLog
.
getPosName
());
}
}
...
@@ -374,18 +371,6 @@ public class MicronPreTaskController {
...
@@ -374,18 +371,6 @@ public class MicronPreTaskController {
orderItem
.
setStatus
(
OrderItemStatus
.
cancel
);
orderItem
.
setStatus
(
OrderItemStatus
.
cancel
);
orderItem
=
liteOrderItemManager
.
save
(
orderItem
);
orderItem
=
liteOrderItemManager
.
save
(
orderItem
);
newList
.
add
(
orderItem
);
newList
.
add
(
orderItem
);
// String orderId = orderItem.getOrderId();
// LiteOrder liteOrder = liteOrderManager.get(orderId);
// DataLog dataLog = new DataLog();
// dataLog.setBarcode(orderItem.getRi());
// dataLog.setPartNumber(orderItem.getPn());
// dataLog.setStatus(OP_STATUS.CANCEL.name());
// dataLog.setType(OP.CHECKOUT);
// dataLog.setSourceId(liteOrder.getId());
// dataLog.setSourceName(liteOrder.getOrderNo());
// dataLog.setSubSourceId(orderItem.getId());
// dataLog.setOperationId(liteOrder.getOrderNo());
// taskService.updateFinishedTask(dataLog);
log
.
info
(
" abort :barcode=["
+
orderItem
.
getPn
()
+
"] 取消出库任务"
);
log
.
info
(
" abort :barcode=["
+
orderItem
.
getPn
()
+
"] 取消出库任务"
);
}
}
}
}
...
@@ -396,18 +381,51 @@ public class MicronPreTaskController {
...
@@ -396,18 +381,51 @@ public class MicronPreTaskController {
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
private
void
CloseOrder
(
LiteOrder
order
){
private
void
CloseOrder
(
LiteOrder
order
)
{
try
{
//如果有已执行完成,未发送的物料,还需要发送过去
List
<
LiteOrderItem
>
liteOrderItemList
=
order
.
getOrderItems
();
for
(
LiteOrderItem
orderItem
:
liteOrderItemList
)
{
if
(
orderItem
.
getStatus
()
==
OrderItemStatus
.
notify_fail
||
orderItem
.
getStatus
()
==
OrderItemStatus
.
cancel
||
orderItem
.
getStatus
()
==
OrderItemStatus
.
executing
)
{
List
<
DataLog
>
dataLogList
=
dataLogManager
.
findByQuery
(
new
Query
(
Criteria
.
where
(
"subSourceId"
).
is
(
orderItem
.
getId
())).
addCriteria
(
Criteria
.
where
(
"status"
).
is
(
OP_STATUS
.
FINISHED
.
name
())));
if
(
dataLogList
.
size
()
>
0
)
{
DataLog
dataLog
=
dataLogList
.
get
(
0
);
String
msg
=
MicronApi
.
Api007SingleReel
(
order
.
getOperationId
(),
dataLog
.
getLocInfo
(),
dataLog
);
if
(
ObjectUtil
.
isEmpty
(
msg
))
{
orderItem
.
setStatus
(
OrderItemStatus
.
notify_success
);
}
else
{
orderItem
.
setExecutFailReason
(
msg
);
orderItem
.
setStatus
(
OrderItemStatus
.
notify_fail
);
orderItem
.
setExecutFailReason
(
msg
);
}
log
.
info
(
" abort mode ["
+
order
.
getMode
()
+
"] :barcode=["
+
dataLog
.
getBarcode
()
+
"],posname=["
+
dataLog
.
getPosName
()
+
"] 已出库完成,调用API007 ,更改状态="
+
orderItem
.
getStatus
()
+
",msg="
+
orderItem
.
getExecutFailReason
());
liteOrderItemManager
.
save
(
orderItem
);
}
}
}
}
catch
(
Exception
ex
)
{
log
.
error
(
"关闭工单前调用API007出错:"
+
ex
.
toString
());
}
order
.
setStatus
(
LITEORDER_STATUS
.
CLOSED
);
order
.
setStatus
(
LITEORDER_STATUS
.
CLOSED
);
order
.
setClosed
(
true
);
order
.
setClosed
(
true
);
liteOrderManager
.
save
(
order
);
liteOrderManager
.
save
(
order
);
liteOrderCache
.
addOrderToMap
(
order
);
liteOrderCache
.
addOrderToMap
(
order
);
//清空配置
//清空配置
String
key
=
Constants
.
CACHE_DISPATCH
+
order
.
getMode
();
String
key
=
Constants
.
CACHE_DISPATCH
+
order
.
getMode
();
log
.
info
(
" mode="
+
order
.
getMode
()+
"工单已关闭,清空 key="
+
key
+
" 的cache,更改action=ABORT"
);
log
.
info
(
" mode="
+
order
.
getMode
()
+
"工单已关闭,清空 key="
+
key
+
" 的cache,更改action=ABORT"
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
ABORT
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
ABORT
);
liteOrderCache
.
clearOrderLock
(
order
);
liteOrderCache
.
clearOrderLock
(
order
);
}
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论