Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 3f7a3aa9
由
LN
编写于
2024-12-04 13:36:34 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
工单出库如果预留失败自动预留下一盘
1 个父辈
65a73fee
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
178 行增加
和
58 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
3f7a3aa
...
@@ -1127,16 +1127,16 @@ public class LiteOrderCache {
...
@@ -1127,16 +1127,16 @@ 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
());
LiteOrderItem
selItem
=
new
LiteOrderItem
(
);
LiteOrderItem
selItem
=
newSubItem
(
pos
);
selItem
.
setRi
(
pos
.
getBarcode
().
getBarcode
());
//
selItem.setRi(pos.getBarcode().getBarcode());
selItem
.
setPn
(
pos
.
getBarcode
().
getPartNumber
());
//
selItem.setPn(pos.getBarcode().getPartNumber());
selItem
.
setStatus
(
OrderItemStatus
.
wait
);
//
selItem.setStatus(OrderItemStatus.wait);
selItem
.
setNeedNum
(
pos
.
getBarcode
().
getAmount
());
//
selItem.setNeedNum(pos.getBarcode().getAmount());
selItem
.
setOutNum
(
pos
.
getBarcode
().
getAmount
());
//
selItem.setOutNum(pos.getBarcode().getAmount());
//物料类型
//
//物料类型
//
String
mtype
=
MicronDataCache
.
GetReelType
(
pos
.
getBarcode
().
getPlateSize
(),
pos
.
getBarcode
().
getHeight
());
//
String mtype = MicronDataCache.GetReelType(pos.getBarcode().getPlateSize(), pos.getBarcode().getHeight());
selItem
.
updateAppendData
(
"mtype"
,
mtype
);
//
selItem.updateAppendData("mtype",mtype);
selectReelItems
.
add
(
selItem
);
selectReelItems
.
add
(
selItem
);
allBarcodes
.
add
(
pos
.
getBarcode
());
allBarcodes
.
add
(
pos
.
getBarcode
());
findPosList
.
add
(
pos
.
getId
()
);
findPosList
.
add
(
pos
.
getId
()
);
...
@@ -1168,54 +1168,60 @@ public class LiteOrderCache {
...
@@ -1168,54 +1168,60 @@ public class LiteOrderCache {
item
.
setOutReelCount
(
0
);
item
.
setOutReelCount
(
0
);
int
outNum
=
0
;
int
outNum
=
0
;
int
outReelCount
=
0
;
int
outReelCount
=
0
;
List
<
LiteOrderItem
>
selItemList
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
selItemList
=
new
ArrayList
<>();
for
(
LiteOrderItem
reelItem
:
for
(
LiteOrderItem
reelItem
:
item
.
getSelectItems
())
{
item
.
getSelectItems
())
{
MaterialStatus
s
=
apiResultMap
.
get
(
reelItem
.
getRi
());
MaterialStatus
s
=
apiResultMap
.
get
(
reelItem
.
getRi
());
String
reservedLinePrepOrderId
=(
s
==
null
?
""
:
s
.
getReservedLinePrepOrderId
());
reelItem
=
updateItemInfo
(
orderNo
,
item
,
reelItem
,
s
);
if
(
ObjectUtil
.
isEmpty
(
reservedLinePrepOrderId
)){
if
(
reelItem
.
getStatus
().
equals
(
OrderItemStatus
.
CheckOk
))
{
reservedLinePrepOrderId
=
""
;
outNum
+=
reelItem
.
getOutNum
();
}
reelItem
.
updateAppendData
(
"lineId"
,
reservedLinePrepOrderId
);
if
(
s
!=
null
&&
s
.
isAvailable
())
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
//reservedLinePrepOrderId
//预留数量
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
s
.
getSerialNum
());
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
reelItem
.
getPn
()
+
"] RI ["
+
reelItem
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()
+
"】"
);
pos
.
getBarcode
().
setLockId
(
cacheOrder
.
getOrderNo
());
pos
.
getBarcode
().
setLockName
(
item
.
getPn
());
storagePosManager
.
save
(
pos
);
outNum
+=
pos
.
getBarcode
().
getAmount
();
outReelCount
+=
1
;
outReelCount
+=
1
;
taskReelCount
+=
1
;
taskReelCount
+=
1
;
}
else
if
(
s
!=
null
&&
s
.
isReserved
()){
String
str
=
s
.
getDescription
();
if
(
ObjectUtil
.
isNotEmpty
(
s
.
getMaterialStatus
())){
str
=
str
+
";"
+
s
.
getMaterialStatus
();
}
reelItem
.
setExecutFailReason
(
str
);
reelItem
.
setStatus
(
OrderItemStatus
.
Reserved
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
item
.
getPn
()
+
"] RI ["
+
item
.
getRi
()
+
"] API009 验证失败,更改状态为 Reserved"
);
}
else
if
(
s
==
null
){
reelItem
.
setExecutFailReason
(
"no result "
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckFail
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
reelItem
.
getPn
()
+
"] RI ["
+
reelItem
.
getRi
()
+
"] API009 验证失败,更改状态为 CheckFail"
);
}
else
{
String
str
=
s
.
getDescription
();
if
(
ObjectUtil
.
isNotEmpty
(
s
.
getMaterialStatus
())){
str
=
str
+
";"
+
s
.
getMaterialStatus
();
}
reelItem
.
setExecutFailReason
(
str
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckFail
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
reelItem
.
getPn
()
+
"] RI ["
+
reelItem
.
getRi
()
+
"] API009 验证失败,更改状态为 CheckFail"
);
}
}
// String reservedLinePrepOrderId=(s==null?"":s.getReservedLinePrepOrderId());
// if(ObjectUtil.isEmpty(reservedLinePrepOrderId)){
// reservedLinePrepOrderId="";
// }
//
// reelItem.updateAppendData("lineId",reservedLinePrepOrderId);
// if (s != null && s.isAvailable()) {
// reelItem.setStatus(OrderItemStatus.CheckOk);
// //reservedLinePrepOrderId
// //预留数量
// StoragePos pos = storagePosManager.getByBarcode(s.getSerialNum());
// log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证成功,更改状态为 CheckOk ,锁定库位【" + pos.getPosName() + "】");
//
//
// pos.getBarcode().setLockId(cacheOrder.getOrderNo());
// pos.getBarcode().setLockName(item.getPn());
// storagePosManager.save(pos);
// outNum += pos.getBarcode().getAmount();
// outReelCount += 1;
// taskReelCount+=1;
// }
// else if(s!=null && s.isReserved()){
// String str=s.getDescription();
// if(ObjectUtil.isNotEmpty(s.getMaterialStatus())){
// str=str+";"+s.getMaterialStatus();
// }
// reelItem.setExecutFailReason(str);
// reelItem.setStatus(OrderItemStatus.Reserved);
// log.info("工单【" + orderNo + "】PN [" + item.getPn() + "] RI [" + item.getRi() + "] API009 验证失败,更改状态为 Reserved");
// }else if(s==null){
//
// reelItem.setExecutFailReason("no result ");
// reelItem.setStatus(OrderItemStatus.CheckFail);
// log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证失败,更改状态为 CheckFail");
// }
// else {
// String str= s.getDescription();
// if(ObjectUtil.isNotEmpty(s.getMaterialStatus())){
// str=str+";"+s.getMaterialStatus();
// }
// reelItem.setExecutFailReason(str);
// reelItem.setStatus(OrderItemStatus.CheckFail);
// log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证失败,更改状态为 CheckFail");
// }
selItemList
.
add
(
reelItem
);
selItemList
.
add
(
reelItem
);
}
}
...
@@ -1223,12 +1229,65 @@ public class LiteOrderCache {
...
@@ -1223,12 +1229,65 @@ public class LiteOrderCache {
item
.
setOutNum
(
outNum
);
item
.
setOutNum
(
outNum
);
item
.
setOutReelCount
(
outReelCount
);
item
.
setOutReelCount
(
outReelCount
);
//判断是否缺料
//判断是否缺料
if
(
outNum
>=
item
.
getNeedNum
()&&
outReelCount
>=
item
.
getNeedReelCount
())
{
if
(
outNum
>=
item
.
getNeedNum
()
&&
outReelCount
>=
item
.
getNeedReelCount
())
{
//已有足够物料
//已有足够物料
item
.
setStatus
(
OrderItemStatus
.
CheckOk
);
item
.
setStatus
(
OrderItemStatus
.
CheckOk
);
}
else
{
}
else
{
//缺料
item
.
setStatus
(
OrderItemStatus
.
shortage
);
String
partNumber
=
item
.
getPn
();
String
reelId
=
item
.
getRi
();
String
mpn
=
item
.
getMpn
();
//需要自动补充其他物料
while
(
outNum
<
item
.
getNeedNum
()
||
outReelCount
<
item
.
getNeedReelCount
())
{
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
excludePosIds
.
addAll
(
findPosList
);
StoragePos
pos
=
null
;
if
(
ObjectUtil
.
isNotEmpty
(
reelId
))
{
break
;
}
else
if
(
Strings
.
isNullOrEmpty
(
reelId
)
&&
!
Strings
.
isNullOrEmpty
(
partNumber
))
{
//PN
pos
=
storagePosManager
.
findPartNumberInStorages
(
availableStorageIds
,
""
,
partNumber
,
excludePosIds
,
checkoutType
,
item
.
getAppendData
());
}
else
if
(
Strings
.
isNullOrEmpty
(
reelId
)
&&
Strings
.
isNullOrEmpty
(
partNumber
)
&&
!
Strings
.
isNullOrEmpty
(
mpn
))
{
pos
=
storagePosManager
.
findMpnInStorages
(
availableStorageIds
,
mpn
,
excludePosIds
,
checkoutType
,
item
.
getAppendData
());
}
if
(
pos
==
null
)
{
// log.error("未找到可以出库的物料[" + partNumber + "]");
break
;
}
findPosList
.
add
(
pos
.
getId
());
taskReelCount
=
taskReelCount
+
1
;
log
.
info
(
"工单["
+
orderNo
+
"],api009验证完成后物料不足,重新挑选物料: 【"
+
pos
.
getPosName
()
+
"】RI=["
+
pos
.
getBarcode
().
getBarcode
()
+
"] PN=["
+
partNumber
+
"] num:"
+
pos
.
getBarcode
().
getAmount
());
LiteOrderItem
newSubItem
=
newSubItem
(
pos
);
List
<
Barcode
>
addBarcodes
=
new
ArrayList
<>();
addBarcodes
.
add
(
pos
.
getBarcode
());
Map
<
String
,
MaterialStatus
>
buReelMap
=
MicronApi
.
Api009
(
cacheOrder
.
getOperationId
(),
lineId
,
addBarcodes
);
MaterialStatus
s
=
buReelMap
.
get
(
newSubItem
.
getRi
());
newSubItem
=
updateItemInfo
(
orderNo
,
item
,
newSubItem
,
s
);
if
(
newSubItem
.
getStatus
().
equals
(
OrderItemStatus
.
CheckOk
))
{
outNum
+=
newSubItem
.
getOutNum
();
outReelCount
+=
1
;
taskReelCount
+=
1
;
}
selItemList
.
add
(
newSubItem
);
}
item
.
setSelectItems
(
selItemList
);
item
.
setOutNum
(
outNum
);
item
.
setOutReelCount
(
outReelCount
);
if
(
outNum
>=
item
.
getNeedNum
()
&&
outReelCount
>=
item
.
getNeedReelCount
())
{
//已有足够物料
item
.
setStatus
(
OrderItemStatus
.
CheckOk
);
log
.
info
(
"工单["
+
orderNo
+
"],RI=["
+
reelId
+
"] PN=["
+
partNumber
+
"],MPN=["
+
mpn
+
"]重新挑选物料后已有足够物料,设置状态=CheckOk"
);
}
else
{
//缺料
item
.
setStatus
(
OrderItemStatus
.
shortage
);
log
.
info
(
"工单["
+
orderNo
+
"],RI=["
+
reelId
+
"] PN=["
+
partNumber
+
"],MPN=["
+
mpn
+
"]重新挑选物料后仍然缺料,设置状态=shortage"
);
}
}
}
liteOrderItemManager
.
save
(
item
);
liteOrderItemManager
.
save
(
item
);
finItem
.
add
(
item
);
finItem
.
add
(
item
);
...
@@ -1248,6 +1307,66 @@ public class LiteOrderCache {
...
@@ -1248,6 +1307,66 @@ public class LiteOrderCache {
return
""
;
return
""
;
}
}
private
LiteOrderItem
newSubItem
(
StoragePos
pos
){
LiteOrderItem
newItem
=
new
LiteOrderItem
();
newItem
.
setRi
(
pos
.
getBarcode
().
getBarcode
());
newItem
.
setPn
(
pos
.
getBarcode
().
getPartNumber
());
newItem
.
setStatus
(
OrderItemStatus
.
wait
);
newItem
.
setNeedNum
(
pos
.
getBarcode
().
getAmount
());
newItem
.
setOutNum
(
pos
.
getBarcode
().
getAmount
());
//物料类型
String
mtype
=
MicronDataCache
.
GetReelType
(
pos
.
getBarcode
().
getPlateSize
(),
pos
.
getBarcode
().
getHeight
());
newItem
.
updateAppendData
(
"mtype"
,
mtype
);
return
newItem
;
}
private
LiteOrderItem
updateItemInfo
(
String
orderNo
,
LiteOrderItem
parItem
,
LiteOrderItem
reelItem
,
MaterialStatus
s
){
// MaterialStatus s = apiResultMap.get(reelItem.getRi());
String
reservedLinePrepOrderId
=(
s
==
null
?
""
:
s
.
getReservedLinePrepOrderId
());
if
(
ObjectUtil
.
isEmpty
(
reservedLinePrepOrderId
)){
reservedLinePrepOrderId
=
""
;
}
reelItem
.
updateAppendData
(
"lineId"
,
reservedLinePrepOrderId
);
if
(
s
!=
null
&&
s
.
isAvailable
())
{
reelItem
.
setStatus
(
OrderItemStatus
.
CheckOk
);
//reservedLinePrepOrderId
//预留数量
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
s
.
getSerialNum
());
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
reelItem
.
getPn
()
+
"] RI ["
+
reelItem
.
getRi
()
+
"] API009 验证成功,更改状态为 CheckOk ,锁定库位【"
+
pos
.
getPosName
()
+
"】"
);
reelItem
.
setOutNum
(
pos
.
getBarcode
().
getAmount
());
pos
.
getBarcode
().
setLockId
(
orderNo
);
pos
.
getBarcode
().
setLockName
(
parItem
.
getPn
());
storagePosManager
.
save
(
pos
);
}
else
if
(
s
!=
null
&&
s
.
isReserved
()){
String
str
=
s
.
getDescription
();
if
(
ObjectUtil
.
isNotEmpty
(
s
.
getMaterialStatus
())){
str
=
str
+
";"
+
s
.
getMaterialStatus
();
}
reelItem
.
setExecutFailReason
(
str
);
reelItem
.
setStatus
(
OrderItemStatus
.
Reserved
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
parItem
.
getPn
()
+
"] RI ["
+
parItem
.
getRi
()
+
"] API009 验证失败,更改状态为 Reserved"
);
}
else
if
(
s
==
null
){
reelItem
.
setExecutFailReason
(
"no result "
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckFail
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
reelItem
.
getPn
()
+
"] RI ["
+
reelItem
.
getRi
()
+
"] API009 验证失败,更改状态为 CheckFail"
);
}
else
{
String
str
=
s
.
getDescription
();
if
(
ObjectUtil
.
isNotEmpty
(
s
.
getMaterialStatus
())){
str
=
str
+
";"
+
s
.
getMaterialStatus
();
}
reelItem
.
setExecutFailReason
(
str
);
reelItem
.
setStatus
(
OrderItemStatus
.
CheckFail
);
log
.
info
(
"工单【"
+
orderNo
+
"】PN ["
+
reelItem
.
getPn
()
+
"] RI ["
+
reelItem
.
getRi
()
+
"] API009 验证失败,更改状态为 CheckFail"
);
}
return
reelItem
;
}
public
LiteOrderItem
NewSelItem
(
StoragePos
pos
){
public
LiteOrderItem
NewSelItem
(
StoragePos
pos
){
LiteOrderItem
selItem
=
new
LiteOrderItem
();
LiteOrderItem
selItem
=
new
LiteOrderItem
();
selItem
.
setRi
(
pos
.
getBarcode
().
getBarcode
());
selItem
.
setRi
(
pos
.
getBarcode
().
getBarcode
());
...
@@ -1303,7 +1422,8 @@ public class LiteOrderCache {
...
@@ -1303,7 +1422,8 @@ public class LiteOrderCache {
//只出checkOK的
//只出checkOK的
needOutBarcode
.
add
(
selItem
.
getRi
());
needOutBarcode
.
add
(
selItem
.
getRi
());
}
}
if
(
selItem
.
getStatus
().
equals
(
OrderItemStatus
.
Reserved
)
&&
isOver
)
{
boolean
checkOutRe
=(!
item
.
getStatus
().
equals
(
OrderItemStatus
.
CheckOk
))||
item
.
getStatus
().
equals
(
OrderItemStatus
.
shortage
);
if
(
selItem
.
getStatus
().
equals
(
OrderItemStatus
.
Reserved
)
&&
isOver
&&
checkOutRe
)
{
needOutBarcode
.
add
(
selItem
.
getRi
());
needOutBarcode
.
add
(
selItem
.
getRi
());
}
}
}
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论