Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit eca2cc90
由
LN
编写于
2024-10-26 13:45:37 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加接口API012.
1 个父辈
503d9130
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
138 行增加
和
13 行删除
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/api/MicronConfig.java
src/main/java/com/neotel/smfcore/custom/micron1053/loading/LoadingController.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
查看文件 @
eca2cc9
...
@@ -444,8 +444,10 @@ public class LiteOrderCache {
...
@@ -444,8 +444,10 @@ public class LiteOrderCache {
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
,更改action=COMPLETE
"
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
COMPLETE
);
}
}
clearOrderLock
(
order
);
clearOrderLock
(
order
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
查看文件 @
eca2cc9
...
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
...
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.exception.ApiException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.Constants
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.common.utils.HttpHelper
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.common.utils.JsonUtil
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
import
com.neotel.smfcore.core.api.listener.BaseSmfApiListener
;
...
@@ -22,17 +23,18 @@ import com.neotel.smfcore.custom.micron1053.loading.util.LoadingUtil;
...
@@ -22,17 +23,18 @@ import com.neotel.smfcore.custom.micron1053.loading.util.LoadingUtil;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
import
java.text.DecimalFormat
;
import
java.text.MessageFormat
;
import
java.text.MessageFormat
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Controller
@Controller
@Slf4j
@Slf4j
public
class
MicronApi
{
public
class
MicronApi
{
// 每个流程开始时发START,流程正常结束发COMPLETE,流程异常结束发ABORT
public
static
String
START
=
"START"
;
public
static
String
COMPLETE
=
"COMPLETE"
;
public
static
String
ABORT
=
"ABORT"
;
public
static
boolean
Debug
=
false
;
public
static
boolean
Debug
=
false
;
private
static
MicronConfig
config
;
private
static
MicronConfig
config
;
...
@@ -877,6 +879,103 @@ public class MicronApi {
...
@@ -877,6 +879,103 @@ public class MicronApi {
}
}
///API-012 Process GET T->H Update the current operation status operation/{OperationId} "In Body=
// {
// ""action"": <action>,
// ""dateTime"": <dateTime>
// }
//
// Action: ""START|COMPLETE|ABORT"" " "Http Status code:
// 200 - Success
// {
// ""trasactionId"": <guid>,
// ""operationId"" : <string>,
// ""operationStatus"" : <string>,
// ""startDateTime"" : <dateTime?>,
// ""endDateTime"" : <dateTime?>,
// ""source"" : <string>,
// ""username"" : <string>,
// ""mode"" : <string>,
// ""tag"":
// [
// <tagKey1> : <tagValue1>,
// <tagKey2> : <tagValue2>,
// ...
// ],
// }
//
// Error Status code:
// {
// ""transactionId"": <TransactionId>,
// ""tag"":
// [
// <tagKey1> : <tagValue1>,
// <tagKey2> : <tagValue2>,
// ...
// ],
// ""error"": <ErrCode>,
// ""message"": <ErrMessage>,
// ""detail"": <ErrDetail>
// }
//"
public
static
boolean
ActionUpdate
(
String
operationId
,
String
action
)
{
try
{
boolean
result
=
Api012
(
operationId
,
action
);
if
(
result
)
{
log
.
info
(
"ActionUpdate operationId="
+
operationId
+
",action="
+
action
+
", 调用Api012 ok:"
+
result
);
}
else
{
log
.
error
(
"ActionUpdate operationId="
+
operationId
+
",action="
+
action
+
", 调用Api012 fail:"
+
result
);
}
return
result
;
}
catch
(
Exception
ex
)
{
log
.
error
(
"ActionUpdate operationId="
+
operationId
+
",action="
+
action
+
", 调用Api012 error:"
+
ex
.
toString
());
}
return
false
;
}
public
static
boolean
Api012
(
String
operationId
,
String
action
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_012
);
url
=
MessageFormat
.
format
(
url
,
operationId
);
try
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"action"
,
action
);
String
time
=
DateUtil
.
toDateTimeString
(
new
Date
());
paramMap
.
put
(
"dateTime"
,
time
);
String
paramStr
=
JsonUtil
.
toJsonStr
(
paramMap
);
log
.
info
(
"调用MES接口 Api012: url="
+
url
+
",body="
+
paramStr
+
""
);
MicronResult
result
=
HttpHelper
.
postMicronJson
(
url
,
paramMap
);
String
errMsg
=
getDErrorMsg
(
result
);
if
(
result
.
isOk
())
{
String
mode
=
result
.
getResult
(
"mode"
,
false
);
String
userName
=
result
.
getResult
(
"result"
,
false
);
log
.
info
(
" Api012 operationId="
+
operationId
+
",获取到 ,mode="
+
mode
+
",userName="
+
userName
+
", "
);
return
true
;
}
else
if
(
ObjectUtil
.
isNotEmpty
(
errMsg
))
{
log
.
info
(
"Api012 ,接口通信失败:"
+
errMsg
);
throw
new
ApiException
(
errMsg
);
}
else
{
log
.
info
(
"Api012 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"Api011 : "
+
result
.
getResponseData
()});
}
}
catch
(
Exception
e
)
{
log
.
error
(
url
+
"出错"
,
e
);
}
return
false
;
}
public
static
boolean
Api101
(
String
id
,
String
operationId
,
String
skipSap
)
{
public
static
boolean
Api101
(
String
id
,
String
operationId
,
String
skipSap
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_101
);
String
url
=
config
.
getUrl
(
config
.
api_name_101
);
url
=
MessageFormat
.
format
(
url
,
id
,
operationId
,
skipSap
);
url
=
MessageFormat
.
format
(
url
,
id
,
operationId
,
skipSap
);
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronConfig.java
查看文件 @
eca2cc9
...
@@ -65,6 +65,12 @@ public class MicronConfig {
...
@@ -65,6 +65,12 @@ public class MicronConfig {
* 获取OperationID ,Get operationId for Loading or Dispatching of material
* 获取OperationID ,Get operationId for Loading or Dispatching of material
*/
*/
public
String
api_name_011
=
"operation?mode={0}&username={1}&source={2}"
;
public
String
api_name_011
=
"operation?mode={0}&username={1}&source={2}"
;
/**
* 增加接口API012调用
* 每个流程开始时发START,流程正常结束发COMPLETE,流程异常结束发ABORT
* 调用API011获取operationId之后就调用API012 开始START(出入库流程都需要)
*/
public
String
api_name_012
=
"operation/{0}"
;
/**
/**
* Validate if MBR (From Warehouse ) is valid
* Validate if MBR (From Warehouse ) is valid
...
@@ -186,6 +192,13 @@ public class MicronConfig {
...
@@ -186,6 +192,13 @@ public class MicronConfig {
}
}
api_name_011
=
api_config
;
api_name_011
=
api_config
;
}
}
@Value
(
"${micron.api_name_012:}"
)
public
void
setApi_name_012
(
String
api_config
)
{
if
(
ObjectUtil
.
isEmpty
(
api_config
)){
return
;
}
api_name_012
=
api_config
;
}
@Value
(
"${micron.api_name_101:}"
)
@Value
(
"${micron.api_name_101:}"
)
public
void
setApi_name_101
(
String
api_config
)
{
public
void
setApi_name_101
(
String
api_config
)
{
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/loading/LoadingController.java
查看文件 @
eca2cc9
...
@@ -208,6 +208,7 @@ public class LoadingController {
...
@@ -208,6 +208,7 @@ public class LoadingController {
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.api.fail"
,
"Api011获取数据失败"
,
new
String
[]{
"Api011"
});
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.api.fail"
,
"Api011获取数据失败"
,
new
String
[]{
"Api011"
});
}
}
MicronApi
.
ActionUpdate
(
id
,
MicronApi
.
START
);
LoadingInfo
loadingInfo
=
new
LoadingInfo
(
APIMODE
.
MATRET
,
id
,
""
,
DateTime
.
now
());
LoadingInfo
loadingInfo
=
new
LoadingInfo
(
APIMODE
.
MATRET
,
id
,
""
,
DateTime
.
now
());
loadingInfo
.
inlistName
=
id
+
"-"
+
DateUtil
.
toDateString
(
loadingInfo
.
startTime
);
loadingInfo
.
inlistName
=
id
+
"-"
+
DateUtil
.
toDateString
(
loadingInfo
.
startTime
);
dataCache
.
updateCache
(
Constants
.
CACHE_LOADING
,
loadingInfo
);
dataCache
.
updateCache
(
Constants
.
CACHE_LOADING
,
loadingInfo
);
...
@@ -262,8 +263,9 @@ public class LoadingController {
...
@@ -262,8 +263,9 @@ public class LoadingController {
}
else
{
}
else
{
//结束入库
//结束入库
log
.
info
(
"终止 入库:"
+
inList
.
getMode
()+
","
+
inList
.
getOperationId
()+
" "
+
inList
.
getName
());
log
.
info
(
"终止 入库:"
+
inList
.
getMode
()+
","
+
inList
.
getOperationId
()+
" "
+
inList
.
getName
()
+
",更改action=ABORT"
);
MicronApi
.
ActionUpdate
(
inList
.
getOperationId
(),
MicronApi
.
ABORT
);
inList
.
setStatus
(
INLIST_STATUS
.
END
);
inList
.
setStatus
(
INLIST_STATUS
.
END
);
inListManager
.
save
(
inList
);
inListManager
.
save
(
inList
);
inListCache
.
addInListToMap
(
inList
);
inListCache
.
addInListToMap
(
inList
);
...
@@ -285,7 +287,8 @@ public class LoadingController {
...
@@ -285,7 +287,8 @@ public class LoadingController {
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
else
{
}
else
{
if
(
inList
.
getStatus
()
==
INLIST_STATUS
.
OK
){
if
(
inList
.
getStatus
()
==
INLIST_STATUS
.
OK
){
log
.
info
(
" 入库单["
+
inList
.
getName
()
+
"]:任务已全部完成,清空当前loadinginfo"
);
log
.
info
(
" 入库单["
+
inList
.
getName
()
+
"]:任务已全部完成,清空当前loadinginfo,更改action=COMPLETE"
);
MicronApi
.
ActionUpdate
(
inList
.
getOperationId
(),
MicronApi
.
COMPLETE
);
dataCache
.
updateCache
(
Constants
.
CACHE_LOADING
,
new
LoadingInfo
());
dataCache
.
updateCache
(
Constants
.
CACHE_LOADING
,
new
LoadingInfo
());
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
查看文件 @
eca2cc9
...
@@ -163,6 +163,7 @@ private IStoragePosManager storagePosManager;
...
@@ -163,6 +163,7 @@ private IStoragePosManager storagePosManager;
dto
.
setOperationId
(
operationId
);
dto
.
setOperationId
(
operationId
);
dataCache
.
updateCache
(
Constants
.
CACHE_DISPATCH
+
mode
,
dto
);
dataCache
.
updateCache
(
Constants
.
CACHE_DISPATCH
+
mode
,
dto
);
MicronApi
.
ActionUpdate
(
operationId
,
MicronApi
.
START
);
//需要输入lineID
//需要输入lineID
return
ResultBean
.
newErrorResult
(
2
,
""
,
""
);
return
ResultBean
.
newErrorResult
(
2
,
""
,
""
);
}
else
{
}
else
{
...
@@ -294,6 +295,7 @@ private IStoragePosManager storagePosManager;
...
@@ -294,6 +295,7 @@ private IStoragePosManager storagePosManager;
if
(
StringUtils
.
isNotBlank
(
operationId
))
{
if
(
StringUtils
.
isNotBlank
(
operationId
))
{
dto
.
setOperationId
(
operationId
);
dto
.
setOperationId
(
operationId
);
dataCache
.
updateCache
(
Constants
.
CACHE_DISPATCH
+
mode
,
dto
);
dataCache
.
updateCache
(
Constants
.
CACHE_DISPATCH
+
mode
,
dto
);
MicronApi
.
ActionUpdate
(
operationId
,
MicronApi
.
START
);
}
else
{
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.api.fail"
,
"Api011 获取数据失败"
,
new
String
[]{
"API011"
});
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.api.fail"
,
"Api011 获取数据失败"
,
new
String
[]{
"API011"
});
}
}
...
@@ -675,8 +677,10 @@ private IStoragePosManager storagePosManager;
...
@@ -675,8 +677,10 @@ private IStoragePosManager storagePosManager;
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
(
"abort mode="
+
order
.
getMode
()
+
" 清空 key="
+
key
+
" 的cache"
);
log
.
info
(
"abort mode="
+
order
.
getMode
()
+
" 清空 key="
+
key
+
" 的cache
,更改action=ABORT
"
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
ABORT
);
}
}
liteOrderCache
.
clearOrderLock
(
order
);
liteOrderCache
.
clearOrderLock
(
order
);
}
}
...
@@ -726,7 +730,8 @@ private IStoragePosManager storagePosManager;
...
@@ -726,7 +730,8 @@ private IStoragePosManager storagePosManager;
}
else
{
}
else
{
String
key
=
Constants
.
CACHE_DISPATCH
+
mode
;
String
key
=
Constants
.
CACHE_DISPATCH
+
mode
;
log
.
info
(
"abort mode="
+
mode
+
" 清空 key="
+
key
+
" 的cache"
);
log
.
info
(
"abort mode="
+
mode
+
" 清空 key="
+
key
+
" 的cache,更改action=ABORT"
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
ABORT
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
}
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
查看文件 @
eca2cc9
...
@@ -125,6 +125,7 @@ public class MicronPreTaskController {
...
@@ -125,6 +125,7 @@ public class MicronPreTaskController {
operationId
=
MicronApi
.
Api011
(
mode
,
SecurityUtils
.
getLoginUsername
(),
""
);
operationId
=
MicronApi
.
Api011
(
mode
,
SecurityUtils
.
getLoginUsername
(),
""
);
if
(
StringUtils
.
isNotBlank
(
operationId
))
{
if
(
StringUtils
.
isNotBlank
(
operationId
))
{
MicronApi
.
ActionUpdate
(
operationId
,
MicronApi
.
START
);
dto
.
setOperationId
(
operationId
);
dto
.
setOperationId
(
operationId
);
dataCache
.
updateCache
(
key
,
dto
);
dataCache
.
updateCache
(
key
,
dto
);
}
else
{
}
else
{
...
@@ -343,7 +344,8 @@ public class MicronPreTaskController {
...
@@ -343,7 +344,8 @@ public class MicronPreTaskController {
if
(
dto
!=
null
){
if
(
dto
!=
null
){
//清空配置
//清空配置
String
key
=
Constants
.
CACHE_DISPATCH
+
mode
;
String
key
=
Constants
.
CACHE_DISPATCH
+
mode
;
log
.
info
(
"abort mode="
+
mode
+
" 清空 key="
+
key
+
" 的cache"
);
log
.
info
(
"abort mode="
+
mode
+
" 清空 key="
+
key
+
" 的cache,更改action=ABORT"
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
ABORT
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
@@ -402,9 +404,10 @@ public class MicronPreTaskController {
...
@@ -402,9 +404,10 @@ public class MicronPreTaskController {
//清空配置
//清空配置
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
,更改action=ABORT
"
);
dataCache
.
updateCache
(
key
,
""
);
dataCache
.
updateCache
(
key
,
""
);
MicronApi
.
ActionUpdate
(
order
.
getOperationId
(),
MicronApi
.
ABORT
);
liteOrderCache
.
clearOrderLock
(
order
);
liteOrderCache
.
clearOrderLock
(
order
);
}
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论