Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 38838ba3
由
LN
编写于
2023-08-31 10:15:29 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
API006问题修改
1 个父辈
8e48a9c5
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
123 行增加
和
117 行删除
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/bean/IdInfo.java
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/MaterialStatus.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
查看文件 @
38838ba
...
...
@@ -841,54 +841,49 @@ public class LiteOrderCache {
material
.
setPartNumber
(
item
.
getBarcode
().
getPartNumber
());
return
material
;
}).
collect
(
Collectors
.
toList
());
//mes提前扣除,扣除成功的直接出库,失败的标记状态
List
<
TrackStatus
>
trackStatusList
=
MicronApi
.
Api010
(
operationId
,
materialList
);
if
(
trackStatusList
!=
null
&&
!
trackStatusList
.
isEmpty
())
{
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
String
ri
=
orderItem
.
getRi
();
//判断是否缺料
StoragePos
storagePos
=
storagePosList
.
stream
().
filter
(
pos
->
pos
.
getBarcode
().
equals
(
ri
)).
findFirst
().
orElse
(
null
);
if
(
storagePos
==
null
)
{
//缺料
orderItem
.
setStatus
(
OrderItemStatus
.
shortage
);
}
//mes提前扣除,扣除成功的直接出库,失败的标记状态
List
<
TrackStatus
>
trackStatusList
=
MicronApi
.
Api010
(
operationId
,
materialList
);
if
(
trackStatusList
!=
null
&&
!
trackStatusList
.
isEmpty
())
{
for
(
LiteOrderItem
orderItem
:
order
.
getOrderItems
())
{
String
ri
=
orderItem
.
getRi
();
//判断是否缺料
StoragePos
storagePos
=
storagePosList
.
stream
().
filter
(
pos
->
pos
.
getBarcode
().
equals
(
ri
)).
findFirst
().
orElse
(
null
);
if
(
storagePos
==
null
)
{
//缺料
orderItem
.
setStatus
(
OrderItemStatus
.
shortage
);
}
else
{
orderItem
.
setNeedNum
(
storagePos
.
getBarcode
().
getAmount
());
TrackStatus
trackStatus
=
trackStatusList
.
stream
().
filter
(
item
->
ri
.
equals
(
item
.
getSerialNum
())).
findAny
().
orElse
(
null
);
if
(
trackStatus
!=
null
&&
trackStatus
.
isSuccess
())
{
//生成任务
DataLog
dataLog
=
new
DataLog
(
dataCache
.
getStorageById
(
storagePos
.
getStorageId
()),
storagePos
.
getBarcode
(),
storagePos
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setSourceId
(
order
.
getId
());
dataLog
.
setSourceName
(
order
.
getOrderNo
());
dataLog
.
setSubSourceId
(
orderItem
.
getId
());
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
dataLog
.
setOperationId
(
operationId
);
taskService
.
addTaskToExecute
(
dataLog
);
taskReelCount
++;
//设置状态.正在出库
orderItem
.
setStatus
(
OrderItemStatus
.
executing
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] ,pn["
+
orderItem
.
getPn
()
+
"] ,RI["
+
ri
+
"] 验证成功,开始出库,累计出库盘数="
+
taskReelCount
);
}
else
{
TrackStatus
trackStatus
=
trackStatusList
.
stream
().
filter
(
item
->
ri
.
equals
(
item
.
getSerialNum
())).
findAny
().
orElse
(
null
);
if
(
trackStatus
!=
null
)
{
if
(
trackStatus
.
isSuccess
())
{
// StoragePos pos = storagePosManager.getByBarcode(ri);
/*if (pos == null) {
orderItem.setStatus(OrderItemStatus.shortage);
continue;
}*/
//生成任务
DataLog
dataLog
=
new
DataLog
(
dataCache
.
getStorageById
(
storagePos
.
getStorageId
()),
storagePos
.
getBarcode
(),
storagePos
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setSourceId
(
order
.
getId
());
dataLog
.
setSourceName
(
order
.
getOrderNo
());
dataLog
.
setSubSourceId
(
orderItem
.
getId
());
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
dataLog
.
setOperationId
(
operationId
);
taskService
.
addTaskToExecute
(
dataLog
);
taskReelCount
++;
//设置状态.正在出库
orderItem
.
setStatus
(
OrderItemStatus
.
executing
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()+
"] operatetionId ["
+
order
.
getOperationId
()+
"] ,pn["
+
orderItem
.
getPn
()+
"] ,RI["
+
ri
+
"] 验证成功,开始出库,累计出库盘数="
+
taskReelCount
);
}
else
{
//标记状态为mes扣除失败
orderItem
.
setStatus
(
OrderItemStatus
.
executFail
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()+
"] operatetionId ["
+
order
.
getOperationId
()+
"] ,pn["
+
orderItem
.
getPn
()+
"] ,RI["
+
ri
+
"] 验证失败,更改状态=executFail"
);
}
}
//标记状态为mes扣除失败
orderItem
.
setStatus
(
OrderItemStatus
.
executFail
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] ,pn["
+
orderItem
.
getPn
()
+
"] ,RI["
+
ri
+
"] 验证失败,更改状态=executFail"
);
}
liteOrderItemManager
.
save
(
orderItem
);
}
liteOrderItemManager
.
save
(
orderItem
);
}
}
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()+
"] operatetionId ["
+
order
.
getOperationId
()+
"] 出库完成,累计任务数="
+
taskReelCount
);
log
.
info
(
"preTaskCheckOut 出库单["
+
order
.
getOrderNo
()
+
"] operatetionId ["
+
order
.
getOperationId
()
+
"] 出库完成,累计任务数="
+
taskReelCount
);
order
.
setTaskReelCount
(
taskReelCount
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
+
taskReelCount
);
if
(
taskReelCount
<=
0
)
{
...
...
@@ -1054,7 +1049,7 @@ public class LiteOrderCache {
for
(
LiteOrderItem
reelItem
:
item
.
getSelectItems
())
{
MaterialStatus
s
=
apiResultMap
.
get
(
reelItem
.
getRi
());
if
(
s
.
getMaterialStatus
().
toUpperCase
().
equalsIgnoreCase
(
"SUCCESS"
))
{
if
(
s
.
StatusOk
(
))
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
s
.
getSerialNum
());
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()
+
"】"
);
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/api/MicronApi.java
查看文件 @
38838ba
...
...
@@ -300,7 +300,7 @@ public class MicronApi {
public
static
List
<
DispatchId
>
Api004
(
String
operationId
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_004
);
url
=
MessageFormat
.
format
(
url
,
operationId
);
if
(
ObjectUtil
.
isEmpty
(
url
)&&
Debug
){
if
(
Debug
){
List
<
DispatchId
>
list
=
new
ArrayList
<>();
DispatchId
id1
=
new
DispatchId
(
"dispatchIds1"
,
new
ArrayList
<>());
List
<
Object
>
atts
=
new
ArrayList
<>();
...
...
@@ -345,7 +345,7 @@ public class MicronApi {
String
url
=
config
.
getUrl
(
config
.
api_name_005
);
List
<
Material
>
materialList
=
new
ArrayList
<>();
if
(
ObjectUtil
.
isEmpty
(
url
)&&
Debug
){
if
(
Debug
){
materialList
.
add
(
new
Material
(
"serialNum1"
,
"partNumber1"
));
return
materialList
;
}
...
...
@@ -354,8 +354,18 @@ public class MicronApi {
try
{
log
.
info
(
"调用MES接口 API005: url="
+
url
+
""
);
MicronResult
result
=
HttpHelper
.
getMicronJson
(
url
);
if
(
result
.
isOk
()&&
result
.
statusIsSuccess
())
{
materialList
=
result
.
getResult
(
"materials"
);
if
(
result
.
isOk
()
)
{
List
<
Object
>
objects
=
result
.
getResult
(
"materials"
,
false
);
if
(
objects
==
null
||
objects
.
size
()<=
0
){
log
.
info
(
"API005 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API005"
});
}
for
(
Object
object
:
objects
)
{
Material
material
=
JsonUtil
.
toObj
(
JsonUtil
.
toJsonStr
(
object
)
,
Material
.
class
);
materialList
.
add
(
material
);
}
return
materialList
;
}
else
{
log
.
info
(
"API005 ,接口通信失败"
);
...
...
@@ -365,7 +375,6 @@ public class MicronApi {
log
.
error
(
url
+
"出错"
,
e
);
return
null
;
}
return
materialList
;
}
public
static
List
<
Material
>
Api006
(
String
operationId
,
List
<
String
>
pretasks
)
{
...
...
@@ -383,7 +392,7 @@ public class MicronApi {
List
<
Material
>
materialList
=
new
ArrayList
<>();
String
url
=
config
.
getUrl
(
config
.
api_name_006
);
if
(
ObjectUtil
.
isEmpty
(
url
)&&
Debug
){
if
(
Debug
){
materialList
.
add
(
new
Material
(
"serialNum1"
,
"partNumber1"
));
materialList
.
add
(
new
Material
(
"serialNum2"
,
"partNumber2"
));
return
materialList
;
...
...
@@ -506,8 +515,16 @@ public class MicronApi {
public
static
Map
<
String
,
MaterialStatus
>
Api009
(
List
<
Barcode
>
barcodeList
)
{
String
url
=
config
.
getUrl
(
config
.
api_name_009
);
Map
<
String
,
MaterialStatus
>
resultMap
=
new
HashMap
<>();
if
(
Debug
){
for
(
Barcode
barcode:
barcodeList
)
{
resultMap
.
put
(
barcode
.
getBarcode
(),
new
MaterialStatus
(
barcode
.
getBarcode
(),
barcode
.
getPartNumber
(),
"success"
,
""
));
}
}
String
url
=
config
.
getUrl
(
config
.
api_name_009
);
try
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
...
...
@@ -583,6 +600,11 @@ public class MicronApi {
if
(
micronResult
.
isOk
()&&
micronResult
.
statusIsSuccess
())
{
statusList
=
micronResult
.
getResult
(
"trackStatus"
);
if
(
statusList
==
null
||
statusList
.
size
()<=
0
){
log
.
info
(
"API010 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API010"
});
}
}
else
{
log
.
info
(
"API010 ,接口通信失败"
);
throw
new
ApiException
(
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API010"
});
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/IdInfo.java
查看文件 @
38838ba
...
...
@@ -12,6 +12,6 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
public
class
IdInfo
implements
Serializable
{
private
String
I
d
;
private
String
i
d
;
private
List
<
Object
>
Attribute
;
}
\ No newline at end of file
src/main/java/com/neotel/smfcore/custom/micron1053/api/bean/MaterialStatus.java
查看文件 @
38838ba
...
...
@@ -14,5 +14,10 @@ public class MaterialStatus implements Serializable {
private
String
serialNum
;
private
String
partNumber
;
private
String
materialStatus
;
private
String
linePrepOrderId
;
private
String
linePrepOrderId
;
public
boolean
StatusOk
()
{
return
materialStatus
.
equalsIgnoreCase
(
"SUCCESS"
);
}
}
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
查看文件 @
38838ba
...
...
@@ -345,7 +345,7 @@ private IStoragePosManager storagePosManager;
reelItem
.
setNeedNum
(
pos
.
getBarcode
().
getAmount
());
MaterialStatus
s
=
apiResultMap
.
get
(
barcode
.
getBarcode
());
if
(
s
.
getMaterialStatus
().
toUpperCase
().
equalsIgnoreCase
(
"SUCCESS"
))
{
if
(
s
.
StatusOk
(
))
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
log
.
info
(
"工单【"
+
order
.
getOrderNo
()
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()
+
"】"
);
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
查看文件 @
38838ba
...
...
@@ -46,6 +46,7 @@ import org.springframework.web.bind.annotation.*;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Slf4j
...
...
@@ -93,33 +94,6 @@ public class MicronPreTaskController {
@GetMapping
(
"/getTaskId"
)
public
ResultBean
task
(
String
mode
)
throws
ApiException
{
//
// MicronResult result = new MicronResult(200,"{\n" +
// " \"trasactionId\": \"00000000-0000-0000-0000-000000000000\",\n" +
// " \"materials\": [\n" +
// " {\n" +
// " \"serialNum\": \"P2SITPCB001\",\n" +
// " \"partNumber\": \"550-502922\"\n" +
// " }\n" +
// " ]\n" +
// "}");
// if (result.isOk()) {
// List<Object> materialList = result.getResult("materials",false);
// if(materialList.size()>0){
// if (materialList != null && !materialList.isEmpty()) {
// //生成工单进行出库
// List<LiteOrderItem> itemList = new ArrayList<>();
// for (Object object : materialList) {
// Material material= JsonUtil.toObj(JsonUtil.toJsonStr( object) ,Material.class);
//
// }
// }
// }
// }else{
//
// log.info("API006 ,接口通信失败");
// throw new ApiException("smfcore.api.fail", "{0} Failed to get data", new String[]{"API006"});
// }
//判断是否验证
if
(!
MicronApi
.
isEnable
())
{
return
ResultBean
.
newErrorResult
(
9
,
"smfcore.micron.apiClose"
,
" Not yet open"
);
...
...
@@ -177,7 +151,11 @@ public class MicronPreTaskController {
//记录
String
key
=
Constants
.
CACHE_DISPATCH
+
mode
;
//先从缓存中获取数据
dto
=
dataCache
.
getCache
(
key
);
try
{
dto
=
dataCache
.
getCache
(
key
);
}
catch
(
Exception
ex
){
return
null
;
}
return
dto
;
}
@ApiOperation
(
"根据勾选的ID,提交后 创建工单任务"
)
...
...
@@ -206,40 +184,45 @@ public class MicronPreTaskController {
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.api.fail"
,
"{0} Failed to get data"
,
new
String
[]{
"API006"
});
}
}
if
(
materialList
!=
null
&&
!
materialList
.
isEmpty
())
{
//生成工单进行出库
List
<
LiteOrderItem
>
itemList
=
new
ArrayList
<>();
for
(
Material
material
:
materialList
)
{
LiteOrderItem
item
=
new
LiteOrderItem
();
item
.
setPn
(
material
.
getPartNumber
());
item
.
setRi
(
material
.
getSerialNum
());
item
.
setNeedReelCount
(
1
);
item
.
setMode
(
mode
);
// //验证是否有料,无料直接显示缺料
// StoragePos pos = storagePosManager.getByBarcode(item.getRi());
// if (pos == null) {
// item.setStatus(OrderItemStatus.shortage);
// } else {
item
.
setStatus
(
OrderItemStatus
.
wait
);
// }
itemList
.
add
(
item
);
try
{
if
(
materialList
!=
null
&&
!
materialList
.
isEmpty
())
{
//生成工单进行出库
List
<
LiteOrderItem
>
itemList
=
new
ArrayList
<>();
for
(
Material
material
:
materialList
)
{
LiteOrderItem
item
=
new
LiteOrderItem
();
item
.
setPn
(
material
.
getPartNumber
());
item
.
setRi
(
material
.
getSerialNum
());
item
.
setNeedReelCount
(
1
);
item
.
setMode
(
mode
);
// //验证是否有料,无料直接显示缺料
// StoragePos pos = storagePosManager.getByBarcode(item.getRi());
// if (pos == null) {
// item.setStatus(OrderItemStatus.shortage);
// } else {
item
.
setStatus
(
OrderItemStatus
.
wait
);
// }
itemList
.
add
(
item
);
}
LiteOrder
liteOrder
=
new
LiteOrder
();
liteOrder
.
setOrderNo
(
operationId
);
liteOrder
.
setMode
(
mode
);
liteOrder
.
setOperationId
(
operationId
);
liteOrder
.
setOrderItems
(
itemList
);
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
NEW
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
log
.
info
(
"submit 勾选后,生成工单:["
+
operationId
+
"]["
+
mode
+
"]"
);
//开始查询是否可以出库
liteOrderCache
.
preTaskCheckOut
(
liteOrder
,
operationId
,
materialList
);
}
LiteOrder
liteOrder
=
new
LiteOrder
();
liteOrder
.
setOrderNo
(
operationId
);
liteOrder
.
setMode
(
mode
);
liteOrder
.
setOperationId
(
operationId
);
liteOrder
.
setOrderItems
(
itemList
);
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
NEW
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
log
.
info
(
"submit 勾选后,生成工单:["
+
operationId
+
"]["
+
mode
+
"]"
);
//开始查询是否可以出库
liteOrderCache
.
preTaskCheckOut
(
liteOrder
,
operationId
,
materialList
);
}
catch
(
Exception
ex
){
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
}
return
ResultBean
.
newOkResult
(
""
);
}
...
...
@@ -320,7 +303,8 @@ public class MicronPreTaskController {
@ApiOperation
(
"放弃出库"
)
@PostMapping
(
"/abort"
)
@AnonymousAccess
public
ResultBean
abort
(
@RequestBody
String
mode
)
{
public
ResultBean
abort
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
String
mode
=
params
.
get
(
"mode"
).
toString
();
TaskDto
dto
=
getTaskDtoByMode
(
mode
);
if
(
dto
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
"smfcore.micron.operationFailure"
,
"操作失败"
);
...
...
@@ -332,8 +316,8 @@ public class MicronPreTaskController {
//如果dto不是空
if
(
dto
!=
null
){
//清空配置
String
key
=
Constants
.
CACHE_DISPATCH
+
order
.
getMode
()
;
log
.
info
(
"abort mode="
+
order
.
getMode
()
+
" 清空 key="
+
key
+
" 的cache"
);
String
key
=
Constants
.
CACHE_DISPATCH
+
mode
;
log
.
info
(
"abort mode="
+
mode
+
" 清空 key="
+
key
+
" 的cache"
);
dataCache
.
updateCache
(
key
,
""
);
return
ResultBean
.
newOkResult
(
""
);
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论