Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 96119e73
由
LN
编写于
2024-08-02 14:31:35 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
出库单入库单的品名保存到barcode的pn
1 个父辈
c4315609
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
364 行增加
和
117 行删除
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpBoxCheckOutController.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpBoxPutInController.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpSpareNoController.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpUnclaimedController.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/service/manager/impl/SpBoxPutInManagerImpl.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/CodeUtil.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/OrderNoCache.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/SpBoxUtil.java
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
查看文件 @
96119e7
...
@@ -658,6 +658,17 @@ public class Barcode extends BasePo implements Serializable {
...
@@ -658,6 +658,17 @@ public class Barcode extends BasePo implements Serializable {
}
}
}
}
return
null
;
return
null
;
}
public
Barcode
getSubCodeByGeKou
(
String
getkou
)
{
if
(
subCodeList
==
null
)
{
return
null
;
}
for
(
Barcode
barcode
:
subCodeList
)
{
if
(
barcode
.
getBarcode
().
equals
(
getkou
))
{
return
barcode
;
}
}
return
null
;
}
}
public
synchronized
void
UpdateSubCode
(
Barcode
barcode
)
{
public
synchronized
void
UpdateSubCode
(
Barcode
barcode
)
{
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
96119e7
...
@@ -1360,20 +1360,67 @@ public class LiteOrderCache {
...
@@ -1360,20 +1360,67 @@ public class LiteOrderCache {
LiteOrder
cacheOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
LiteOrder
cacheOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
cacheOrder
==
null
)
{
if
(
cacheOrder
==
null
)
{
log
.
info
(
"未找到工单:"
+
orderNo
+
"的信息"
);
log
.
info
(
"未找到工单:"
+
orderNo
+
"的信息"
);
return
"预约单不存在"
;
return
"预约单
"
+
orderNo
+
"
不存在"
;
}
}
if
(
cacheOrder
.
isClosed
())
{
if
(
cacheOrder
.
isClosed
())
{
log
.
info
(
"工单:"
+
orderNo
+
"已经关闭"
);
log
.
info
(
"工单:"
+
orderNo
+
"已经关闭"
);
return
"预约单已关闭"
;
return
"预约单
"
+
orderNo
+
"
已关闭"
;
}
}
if
(
cacheOrder
.
isOutTails
())
{
if
(
cacheOrder
.
isOutTails
())
{
log
.
info
(
"工单:"
+
orderNo
+
"正在执行中"
);
log
.
info
(
"工单:"
+
orderNo
+
"正在执行中"
);
return
"预约单正在执行中"
;
return
"预约单
"
+
orderNo
+
"
正在执行中"
;
}
}
log
.
info
(
"开始执行预约单"
);
log
.
info
(
"开始执行预约单:"
+
liteOrder
.
getOrderNo
());
//先验证是否可出
for
(
LiteOrderItem
item
:
cacheOrder
.
getOrderItems
())
{
String
pn
=
item
.
getPn
();
int
needNum
=
item
.
getNeedNum
();
int
totalOutNum
=
item
.
getTotalOutNum
();
int
assignNum
=
0
;
int
needOutNum
=
needNum
-
totalOutNum
;
while
(
assignNum
<
needOutNum
)
{
List
<
String
>
storageIdList
=
new
ArrayList
<>();
for
(
Storage
storage
:
dataCache
.
getAllStorage
().
values
())
{
storageIdList
.
add
(
storage
.
getId
());
}
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
excludePosIds
=
new
ArrayList
<>();
CHECKOUT_TYPE
checkOutType
=
dataCache
.
getCheckOutType
();
//获取可用库位
StoragePos
pos
=
storagePosManager
.
findPartNumberInStorages
(
storageIdList
,
pn
,
excludePosIds
,
checkOutType
,
""
);
if
(
pos
==
null
)
{
log
.
info
(
"预约单 "
+
liteOrder
.
getOrderNo
()
+
" 的物料 "
+
item
.
getPn
()
+
"未找到"
);
return
"预约单"
+
liteOrder
.
getOrderNo
()
+
" 的物料 "
+
item
.
getPn
()
+
"未找到"
;
}
cacheOrder
.
setTaskReelCount
(
item
.
getNeedNum
());
//进行标记
boolean
hasSmpPn
=
false
;
Barcode
barcode
=
pos
.
getBarcode
();
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
for
(
Barcode
subCode
:
subCodeList
)
{
if
(
pn
.
equals
(
subCode
.
getPartNumber
()))
{
// 数量不足
if
(
subCode
.
getAmount
()
<
needOutNum
)
{
return
"预约单"
+
liteOrder
.
getOrderNo
()
+
" 的物料 "
+
item
.
getPn
()
+
"数量"
+
subCode
.
getAmount
()
+
"不足"
;
}
assignNum
=
assignNum
+
subCode
.
getAmount
();
hasSmpPn
=
true
;
break
;
}
}
}
}
cacheOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
cacheOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
...
@@ -1394,12 +1441,13 @@ public class LiteOrderCache {
...
@@ -1394,12 +1441,13 @@ public class LiteOrderCache {
storageIdList
.
add
(
storage
.
getId
());
storageIdList
.
add
(
storage
.
getId
());
}
}
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
excludePosIds
=
new
ArrayList
<>();
CHECKOUT_TYPE
checkOutType
=
dataCache
.
getCheckOutType
();
CHECKOUT_TYPE
checkOutType
=
dataCache
.
getCheckOutType
();
//获取可用库位
//获取可用库位
StoragePos
pos
=
storagePosManager
.
findPartNumberInStorages
(
storageIdList
,
pn
,
excludePosIds
,
checkOutType
,
""
);
StoragePos
pos
=
storagePosManager
.
findPartNumberInStorages
(
storageIdList
,
pn
,
excludePosIds
,
checkOutType
,
""
);
if
(
pos
==
null
)
{
if
(
pos
==
null
)
{
log
.
info
(
item
.
getPn
()
+
"未找到可用库位,跳过"
);
log
.
info
(
"预约单 "
+
liteOrder
.
getOrderNo
()
+
" 的 "
+
item
.
getPn
()
+
"未找到可用库位,跳过"
);
break
;
break
;
}
}
cacheOrder
.
setTaskReelCount
(
item
.
getNeedNum
());
cacheOrder
.
setTaskReelCount
(
item
.
getNeedNum
());
...
@@ -1409,7 +1457,7 @@ public class LiteOrderCache {
...
@@ -1409,7 +1457,7 @@ public class LiteOrderCache {
Barcode
barcode
=
pos
.
getBarcode
();
Barcode
barcode
=
pos
.
getBarcode
();
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
for
(
Barcode
subCode
:
subCodeList
)
{
for
(
Barcode
subCode
:
subCodeList
)
{
if
(
pn
.
equals
(
subCode
.
getPartNumber
())){
if
(
pn
.
equals
(
subCode
.
getPartNumber
()))
{
// 数量不足
// 数量不足
if
(
subCode
.
getAmount
()
<
needOutNum
)
{
if
(
subCode
.
getAmount
()
<
needOutNum
)
{
throw
new
Exception
(
"库存不足"
);
throw
new
Exception
(
"库存不足"
);
...
@@ -1417,36 +1465,66 @@ public class LiteOrderCache {
...
@@ -1417,36 +1465,66 @@ public class LiteOrderCache {
subCode
.
setOut
(
true
);
subCode
.
setOut
(
true
);
subCode
.
setOrderItemId
(
item
.
getId
());
subCode
.
setOrderItemId
(
item
.
getId
());
subCode
.
setOrderId
(
cacheOrder
.
getId
());
subCode
.
setOrderId
(
cacheOrder
.
getId
());
subCode
.
updateExtraData
(
"needOutNum"
,
needOutNum
+
""
);
if
(
ObjectUtil
.
isNotEmpty
(
item
.
getPartname
())){
subCode
.
setPn
(
item
.
getPosName
());
}
subCode
=
barcodeManager
.
save
(
subCode
);
subCode
=
barcodeManager
.
save
(
subCode
);
barcode
.
updateSubCodes
(
subCode
);
barcode
.
updateSubCodes
(
subCode
);
barcodeManager
.
save
(
barcode
);
barcodeManager
.
save
(
barcode
);
log
.
info
(
"预约单 "
+
liteOrder
.
getOrderNo
()
+
" 的 "
+
item
.
getPn
()
+
"找到格口:"
+
subCode
.
getBarcode
());
assignNum
=
assignNum
+
subCode
.
getAmount
();
assignNum
=
assignNum
+
subCode
.
getAmount
();
hasSmpPn
=
true
;
hasSmpPn
=
true
;
break
;
break
;
}
}
}
}
if
(
hasSmpPn
){
if
(
hasSmpPn
)
{
boxCheckOutNum
=
boxCheckOutNum
+
1
;
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
boolean
hasTask
=
false
;
DataLog
dataLog
=
new
DataLog
(
storage
,
barcode
,
pos
);
//判断是否有出库任务
dataLog
.
setSourceId
(
cacheOrder
.
getId
());
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
dataLog
.
setSourceName
(
cacheOrder
.
getOrderNo
());
Collection
<
String
>
operatingPosIds
=
new
HashSet
<>();
dataLog
.
setType
(
OP
.
CHECKOUT
);
for
(
DataLog
task
:
allTasks
)
{
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
if
(
task
.
isCheckOutTask
()&&
task
.
getPosName
().
equals
((
pos
.
getPosName
()))){
taskService
.
updateQueueTask
(
dataLog
);
//已有出库任务
if
(
task
.
isFinished
()||
task
.
isCancel
()||
task
.
isEnd
()){
continue
;
}
hasTask
=
true
;
break
;
}
}
if
(
hasTask
){
boxCheckOutNum
=
boxCheckOutNum
+
1
;
log
.
info
(
"预约单 "
+
liteOrder
.
getOrderNo
()
+
" pn="
+
pn
+
",找到要出库的箱子 "
+
barcode
.
getBarcode
()+
",料箱已有出库任务,不重新创建出库任务"
);
}
else
{
boxCheckOutNum
=
boxCheckOutNum
+
1
;
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
DataLog
dataLog
=
new
DataLog
(
storage
,
barcode
,
pos
);
dataLog
.
setSourceId
(
cacheOrder
.
getId
());
dataLog
.
setSourceName
(
cacheOrder
.
getOrderNo
());
dataLog
.
setSubSourceId
(
item
.
getItemId
());
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
taskService
.
updateQueueTask
(
dataLog
);
log
.
info
(
"预约单 "
+
liteOrder
.
getOrderNo
()
+
" pn="
+
pn
+
",找到要出库的箱子 "
+
barcode
.
getBarcode
()+
",创建出库任务,总出库箱子数:"
+
boxCheckOutNum
);
}
}
}
}
}
}
}
if
(
boxCheckOutNum
<=
0
){
if
(
boxCheckOutNum
<=
0
)
{
finishedOrderTasks
(
liteOrder
);
finishedOrderTasks
(
liteOrder
);
return
orderNo
+
"未找到可以执行的任务"
;
log
.
info
(
"预约单 "
+
liteOrder
.
getOrderNo
()
+
" 未找到可执行的任务"
);
return
orderNo
+
"未找到可以执行的任务"
;
}
else
{
log
.
info
(
"预约单 "
+
liteOrder
.
getOrderNo
()
+
" 共出库 "
+
boxCheckOutNum
);
}
}
liteOrderMap
.
put
(
orderNo
,
cacheOrder
);
liteOrderMap
.
put
(
orderNo
,
cacheOrder
);
liteOrderManager
.
save
(
cacheOrder
);
liteOrderManager
.
save
(
cacheOrder
);
return
""
;
return
""
;
}
}
...
...
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
96119e7
...
@@ -289,4 +289,18 @@ public class LiteOrder extends BasePo implements Serializable {
...
@@ -289,4 +289,18 @@ public class LiteOrder extends BasePo implements Serializable {
orderItems
.
add
(
item
);
orderItems
.
add
(
item
);
}
}
public
LiteOrderItem
getOrderItemByPn
(
String
pn
){
if
(
orderItems
==
null
)
{
orderItems
=
new
ArrayList
<>();
}
for
(
LiteOrderItem
item
:
orderItems
)
{
if
(
item
.
getPn
().
equals
(
pn
)){
return
item
;
}
}
return
null
;
}
}
}
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrderItem.java
查看文件 @
96119e7
...
@@ -25,6 +25,10 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
...
@@ -25,6 +25,10 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
*/
*/
private
String
ri
;
private
String
ri
;
/**
* 料名,例如红色/PVC
*/
private
String
partname
;
/**
/**
* 总需求数量
* 总需求数量
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpBoxCheckOutController.java
查看文件 @
96119e7
...
@@ -62,8 +62,6 @@ public class SpBoxCheckOutController {
...
@@ -62,8 +62,6 @@ public class SpBoxCheckOutController {
@Autowired
@Autowired
private
IBarcodeManager
barcodeManager
;
private
IBarcodeManager
barcodeManager
;
@Autowired
private
IUnclaimedManager
unclaimedManager
;
@Autowired
@Autowired
private
TaskService
taskService
;
private
TaskService
taskService
;
...
@@ -82,6 +80,114 @@ public class SpBoxCheckOutController {
...
@@ -82,6 +80,114 @@ public class SpBoxCheckOutController {
@Autowired
@Autowired
private
DataCache
dataCache
;
private
DataCache
dataCache
;
@ApiOperation
(
"根据料箱号和格口号,自动取出"
)
@RequestMapping
(
"/taksOutReel"
)
@AnonymousAccess
public
synchronized
ResultBean
taksOutReel
(
@RequestBody
Map
<
String
,
String
>
paramMap
)
{
String
boxStr
=
paramMap
.
get
(
"boxStr"
).
trim
();
String
gekouCodeStr
=
paramMap
.
get
(
"binCodeStr"
).
trim
();
Integer
taskOutNum
=
Integer
.
parseInt
(
paramMap
.
get
(
"outNum"
).
trim
())
;
log
.
info
(
"reelOutBox : boxStr="
+
boxStr
+
",taskOutNum="
+
taskOutNum
+
",binCodeStr="
+
gekouCodeStr
);
//解析料箱信息
Barcode
boxBarcode
=
codeResolve
.
resolveOneValideBarcode
(
"=2x2="
+
boxStr
);
if
(
boxBarcode
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"不是有效的条码"
);
}
//解析料格信息
Barcode
gekouBarcode
=
codeResolve
.
resolveOneValideBarcode
(
"=2x2="
+
gekouCodeStr
);
if
(
gekouBarcode
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
gekouCodeStr
+
"不是有效的条码"
);
}
//1.判断料格信息与料箱信息是否匹配
if
(!
gekouBarcode
.
getBarcode
().
startsWith
(
boxBarcode
.
getBarcode
()))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
gekouCodeStr
+
"不是当前料箱:"
+
boxStr
+
"的格口"
);
}
int
binCodeNum
=
Integer
.
parseInt
(
gekouCodeStr
.
split
(
"-"
)[
1
]);
//判断格口数量是否超出
int
count
=
boxBarcode
.
getMaxSubNum
();
if
(
binCodeNum
>
count
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxBarcode
.
getBarcode
()
+
"最多格口数"
+
count
+
",请扫描正确的格口码"
);
}
//判断格口物料数量
Barcode
reelInfo
=
boxBarcode
.
getSubCodeByGeKou
(
gekouCodeStr
);
if
(
reelInfo
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
gekouCodeStr
+
"未找到物料信息"
);
}
if
(
reelInfo
.
getQty
()<
taskOutNum
){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
gekouCodeStr
+
"物料"
+
reelInfo
.
getQty
()+
"数量"
+
reelInfo
.
getQty
()+
"不足"
);
}
// 判断是不是工单出库
LiteOrder
liteOrder
=
liteOrderCache
.
getExecutingOrder
();
if
(
liteOrder
!=
null
)
{
//判断所属的工单任务是否完成
String
result
=
handleOrderNo
(
liteOrder
,
gekouBarcode
.
getPartNumber
(),
taskOutNum
);
if
(
StringUtils
.
isNotEmpty
(
result
))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
result
);
}
}
else
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
gekouCodeStr
+
"没有要出库的任务"
);
}
//4.开始拿出料箱
gekouBarcode
.
setAmount
(
gekouBarcode
.
getAmount
()
-
taskOutNum
);
gekouBarcode
.
updateExtraData
(
"needOutNum"
,
"0"
);
if
(
gekouBarcode
.
getAmount
()
<=
0
)
{
gekouBarcode
.
setAmount
(
0
);
}
boxBarcode
.
updateSubCodes
(
gekouBarcode
);
//5.寻找空库位
StoragePos
pos
=
SpBoxUtil
.
locOnePos
(
boxBarcode
);
if
(
pos
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"未找到可用的库位"
);
}
log
.
info
(
"reelOutBox : boxStr="
+
boxStr
+
",binCodeStr="
+
gekouCodeStr
+
"出库完成,数量"
+
taskOutNum
+
",剩余数量:"
+
gekouBarcode
.
getAmount
());
//6.生成出库任务
DataLog
dataLog
=
new
DataLog
();
dataLog
.
setBarcode
(
CodeUtil
.
getReelCodeStr
(
reelInfo
.
getPartNumber
(),
taskOutNum
));
dataLog
.
setPartNumber
(
reelInfo
.
getPartNumber
());
dataLog
.
setOperator
(
SecurityUtils
.
getLoginUsername
());
dataLog
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
dataLog
.
setPosName
(
gekouBarcode
.
getBarcode
());
dataLog
.
setNum
(
taskOutNum
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
if
(
liteOrder
!=
null
)
{
dataLog
.
setSourceId
(
liteOrder
.
getId
());
dataLog
.
setSourceName
(
liteOrder
.
getOrderNo
());
}
taskService
.
updateFinishedTask
(
dataLog
);
boxBarcode
.
setStatus
(
BARCODE_STATUS
.
OUT_NORMAL
);
pos
.
setBarcode
(
boxBarcode
);
pos
.
setUsed
(
true
);
storagePosManager
.
save
(
pos
);
barcodeManager
.
save
(
gekouBarcode
);
barcodeManager
.
save
(
boxBarcode
);
//更新库存
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
dataCache
.
updateInventoryAmount
(
storage
.
getCid
(),
reelInfo
.
getPartNumber
(),
-
taskOutNum
);
Map
<
String
,
String
>
res
=
new
HashMap
<>();
res
.
put
(
"PN"
,
reelInfo
.
getPartNumber
());
res
.
put
(
"InPutNum"
,
taskOutNum
+
""
);
res
.
put
(
"CurrNum"
,
gekouBarcode
.
getAmount
()+
""
);
res
.
put
(
"Code"
,
gekouBarcode
.
getBarcode
());
return
ResultBean
.
newOkResult
(
""
,
CodeUtil
.
getReelCodeStr
(
reelInfo
.
getPartNumber
(),
taskOutNum
)+
"出库成功"
,
res
);
}
//以料格为维度,一个料格
//以料格为维度,一个料格
...
@@ -115,6 +221,7 @@ public class SpBoxCheckOutController {
...
@@ -115,6 +221,7 @@ public class SpBoxCheckOutController {
if
(
codeBarcode
==
null
)
{
if
(
codeBarcode
==
null
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
rellCodeStr
+
"不是有效的条码"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
rellCodeStr
+
"不是有效的条码"
);
}
}
Integer
taskOutNum
=
codeBarcode
.
getQty
();
//1.判断料格信息与料箱信息是否匹配
//1.判断料格信息与料箱信息是否匹配
if
(!
gekouBarcode
.
getBarcode
().
startsWith
(
boxBarcode
.
getBarcode
()))
{
if
(!
gekouBarcode
.
getBarcode
().
startsWith
(
boxBarcode
.
getBarcode
()))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
gekouCodeStr
+
"不是当前料箱:"
+
boxStr
+
"的格口"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
gekouCodeStr
+
"不是当前料箱:"
+
boxStr
+
"的格口"
);
...
@@ -127,26 +234,11 @@ public class SpBoxCheckOutController {
...
@@ -127,26 +234,11 @@ public class SpBoxCheckOutController {
if
(
binCodeNum
>
count
)
{
if
(
binCodeNum
>
count
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxBarcode
.
getBarcode
()
+
"最多格口数"
+
count
+
",请扫描正确的格口码"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxBarcode
.
getBarcode
()
+
"最多格口数"
+
count
+
",请扫描正确的格口码"
);
}
}
// 判断是不是工单出库
// 判断是不是工单出库
boolean
isOrderCheckout
=
StringUtils
.
isNotBlank
(
liteOrderCache
.
hasExecutingOrder
());
LiteOrder
liteOrder
=
liteOrderCache
.
getExecutingOrder
();
LiteOrder
liteOrder
=
null
;
if
(
liteOrder
!=
null
)
{
if
(
isOrderCheckout
)
{
liteOrder
=
liteOrderManager
.
get
(
gekouBarcode
.
getOrderId
());
if
(
liteOrder
==
null
||
liteOrder
.
isClosed
())
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxBarcode
.
getBarcode
()
+
"工单"
+
liteOrder
.
getOrderNo
()
+
"已关闭,无法再出库"
);
}
//4.判断当前需不需要出库
String
itemId
=
gekouBarcode
.
getOrderItemId
();
if
(
StringUtils
.
isEmpty
(
itemId
))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"没有要出库的任务"
);
}
//判断所属的工单任务是否完成
//判断所属的工单任务是否完成
String
result
=
handleOrderNo
(
liteOrder
,
itemId
,
codeBarcode
.
getQty
()
);
String
result
=
handleOrderNo
(
liteOrder
,
gekouBarcode
.
getPartNumber
(),
taskOutNum
);
if
(
StringUtils
.
isNotEmpty
(
result
))
{
if
(
StringUtils
.
isNotEmpty
(
result
))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
result
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
result
);
}
}
...
@@ -175,6 +267,7 @@ public class SpBoxCheckOutController {
...
@@ -175,6 +267,7 @@ public class SpBoxCheckOutController {
if
(
gekouBarcode
.
getAmount
()
<=
0
)
{
if
(
gekouBarcode
.
getAmount
()
<=
0
)
{
gekouBarcode
.
setAmount
(
0
);
gekouBarcode
.
setAmount
(
0
);
}
}
gekouBarcode
.
updateExtraData
(
"needOutNum"
,
"0"
);
boxBarcode
.
updateSubCodes
(
gekouBarcode
);
boxBarcode
.
updateSubCodes
(
gekouBarcode
);
...
@@ -221,11 +314,11 @@ public class SpBoxCheckOutController {
...
@@ -221,11 +314,11 @@ public class SpBoxCheckOutController {
}
}
private
String
handleOrderNo
(
LiteOrder
liteOrder
,
String
orderItemId
,
int
amount
)
{
private
String
handleOrderNo
(
LiteOrder
liteOrder
,
String
pn
,
int
amount
)
{
List
<
LiteOrderItem
>
newOrderItemList
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
newOrderItemList
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
orderItemList
=
liteOrder
.
getOrderItems
();
List
<
LiteOrderItem
>
orderItemList
=
liteOrder
.
getOrderItems
();
for
(
LiteOrderItem
item
:
orderItemList
)
{
for
(
LiteOrderItem
item
:
orderItemList
)
{
if
(
item
.
get
Id
().
equals
(
orderItemId
))
{
if
(
item
.
get
Pn
().
equals
(
pn
))
{
if
(
item
.
getNeedNum
()
-
item
.
getTotalOutNum
()
<=
0
)
{
if
(
item
.
getNeedNum
()
-
item
.
getTotalOutNum
()
<=
0
)
{
return
liteOrder
.
getOrderNo
()
+
"预约单中:"
+
item
.
getPn
()
+
"已经出库完成,不允许出库"
;
return
liteOrder
.
getOrderNo
()
+
"预约单中:"
+
item
.
getPn
()
+
"已经出库完成,不允许出库"
;
}
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpBoxPutInController.java
查看文件 @
96119e7
...
@@ -13,6 +13,7 @@ import com.neotel.smfcore.core.system.service.dao.impl.DataLogDaoImpl;
...
@@ -13,6 +13,7 @@ import com.neotel.smfcore.core.system.service.dao.impl.DataLogDaoImpl;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.lizhen.agvBox.bean.Station
;
import
com.neotel.smfcore.custom.lizhen.agvBox.bean.Station
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.StationCacheUtil
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.StationCacheUtil
;
import
com.neotel.smfcore.custom.luxsan_sp.api.LuxsanSpApi
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.IReturnNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.IReturnNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpareNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpareNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpBoxPutInManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpBoxPutInManager
;
...
@@ -52,9 +53,11 @@ public class SpBoxPutInController {
...
@@ -52,9 +53,11 @@ public class SpBoxPutInController {
}
}
String
currentRfid
=
station
.
getCurrentRfid
();
String
currentRfid
=
station
.
getCurrentRfid
();
// if(ObjectUtil.isEmpty(currentRfid)){
if
(
ObjectUtil
.
isEmpty
(
currentRfid
)){
// currentRfid="CS1789B";
if
(
LuxsanSpApi
.
Debug
){
// }
currentRfid
=
"CS9999B"
;
}
}
// log.info("getStationInfo工位上"+currentRfid);
// log.info("getStationInfo工位上"+currentRfid);
// currentRfid = "C0700377A";
// currentRfid = "C0700377A";
if
(
StringUtils
.
isEmpty
(
currentRfid
)){
if
(
StringUtils
.
isEmpty
(
currentRfid
)){
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpSpareNoController.java
查看文件 @
96119e7
...
@@ -6,6 +6,8 @@ import com.neotel.smfcore.common.utils.StringUtils;
...
@@ -6,6 +6,8 @@ import com.neotel.smfcore.common.utils.StringUtils;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.luxsan_sp.api.LuxsanSpApi
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.request.GetSpareNoRequest
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.result.GetSpareNoResult
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.result.GetSpareNoResult
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.SpareNo
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.SpareNo
;
import
com.neotel.smfcore.custom.luxsan_sp.enums.SpareNostatus
;
import
com.neotel.smfcore.custom.luxsan_sp.enums.SpareNostatus
;
...
@@ -61,8 +63,8 @@ public class SpSpareNoController {
...
@@ -61,8 +63,8 @@ public class SpSpareNoController {
@AnonymousAccess
@AnonymousAccess
public
ResultBean
getAllSpareNo
(
String
no
)
{
public
ResultBean
getAllSpareNo
(
String
no
)
{
// 从远程获取入库单(已经保存的不要)+还要展示本地的入库单
// 从远程获取入库单(已经保存的不要)+还要展示本地的入库单
//
List<GetSpareNoResult> resultList = LuxsanSpApi.getSpareNo(new GetSpareNoRequest(SpareNostatus.FORMAL_DEPT_ID, SpareNostatus.FUNCTION_DEPT));
List
<
GetSpareNoResult
>
resultList
=
LuxsanSpApi
.
getSpareNo
(
new
GetSpareNoRequest
(
SpareNostatus
.
FORMAL_DEPT_ID
,
SpareNostatus
.
FUNCTION_DEPT
));
List
<
GetSpareNoResult
>
resultList
=
new
ArrayList
<>();
//
List<GetSpareNoResult> resultList = new ArrayList<>();
List
<
SpareNo
>
allSpareFromDB
=
spareNoManager
.
findAll
();
List
<
SpareNo
>
allSpareFromDB
=
spareNoManager
.
findAll
();
List
<
SpareNo
>
resultSpare
=
new
ArrayList
<>(
allSpareFromDB
);
List
<
SpareNo
>
resultSpare
=
new
ArrayList
<>(
allSpareFromDB
);
List
<
String
>
spareNoDBCollection
=
allSpareFromDB
.
stream
().
map
(
SpareNo:
:
getSpareNo
).
collect
(
Collectors
.
toList
());
List
<
String
>
spareNoDBCollection
=
allSpareFromDB
.
stream
().
map
(
SpareNo:
:
getSpareNo
).
collect
(
Collectors
.
toList
());
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpUnclaimedController.java
查看文件 @
96119e7
...
@@ -78,7 +78,6 @@ public class SpUnclaimedController {
...
@@ -78,7 +78,6 @@ public class SpUnclaimedController {
@RequestMapping
(
"/getAllUnclaimed"
)
@RequestMapping
(
"/getAllUnclaimed"
)
@AnonymousAccess
@AnonymousAccess
public
ResultBean
getAllUnclaimed
(
String
no
)
{
public
ResultBean
getAllUnclaimed
(
String
no
)
{
List
<
GetUnclaimedResult
>
resultList
=
LuxsanSpApi
.
getUnclaimedDetails
(
new
GetUnclaimedRequest
(
SpareNostatus
.
FORMAL_DEPT_ID
,
SpareNostatus
.
FUNCTION_DEPT
));
// List<GetUnclaimedResult> resultList = new ArrayList<>();
// List<GetUnclaimedResult> resultList = new ArrayList<>();
List
<
LiteOrder
>
allLiteOrderFromDB
=
liteOrderManager
.
findAll
();
List
<
LiteOrder
>
allLiteOrderFromDB
=
liteOrderManager
.
findAll
();
List
<
LiteOrder
>
onlyOneAllLiteOrderFromDB
=
new
ArrayList
<>();
List
<
LiteOrder
>
onlyOneAllLiteOrderFromDB
=
new
ArrayList
<>();
...
@@ -95,26 +94,28 @@ public class SpUnclaimedController {
...
@@ -95,26 +94,28 @@ public class SpUnclaimedController {
List
<
String
>
allLiteOrderDBCollect
=
onlyOneAllLiteOrderFromDB
.
stream
().
map
(
LiteOrder:
:
getOrderNo
).
collect
(
Collectors
.
toList
());
List
<
String
>
allLiteOrderDBCollect
=
onlyOneAllLiteOrderFromDB
.
stream
().
map
(
LiteOrder:
:
getOrderNo
).
collect
(
Collectors
.
toList
());
List
<
Unclaimed
>
resultLiteOrder
=
new
ArrayList
<>();
List
<
Unclaimed
>
resultLiteOrder
=
new
ArrayList
<>();
for
(
LiteOrder
liteOrder
:
onlyOneAllLiteOrderFromDB
)
{
for
(
LiteOrder
liteOrder
:
onlyOneAllLiteOrderFromDB
)
{
Unclaimed
unclaimed
=
new
Unclaimed
();
// Unclaimed unclaimed = new Unclaimed();
unclaimed
.
setCreateDate
(
liteOrder
.
getCreateDate
());
// unclaimed.setCreateDate(liteOrder.getCreateDate());
unclaimed
.
setOrderNo
(
liteOrder
.
getOrderNo
());
// unclaimed.setOrderNo(liteOrder.getOrderNo());
List
<
UnclaimedDetail
>
unclaimedDetails
=
new
ArrayList
<>();
// List<UnclaimedDetail> unclaimedDetails = new ArrayList<>();
for
(
LiteOrderItem
orderItem
:
liteOrder
.
getOrderItems
())
{
// for (LiteOrderItem orderItem : liteOrder.getOrderItems()) {
UnclaimedDetail
unclaimedDetail
=
new
UnclaimedDetail
();
// UnclaimedDetail unclaimedDetail = new UnclaimedDetail();
unclaimedDetail
.
setPartno
(
orderItem
.
getPn
());
// unclaimedDetail.setPartno(orderItem.getPn());
unclaimedDetail
.
setOrderNo
(
orderItem
.
getOrderNo
());
// unclaimedDetail.setOrderNo(orderItem.getOrderNo());
unclaimedDetail
.
setApplyQty
(
orderItem
.
getNeedNum
());
// unclaimedDetail.setApplyQty(orderItem.getNeedNum());
unclaimedDetail
.
setAlrInQty
(
orderItem
.
getTotalOutNum
());
// unclaimedDetail.setAlrInQty(orderItem.getTotalOutNum());
if
(
liteOrder
.
isOutTails
()){
// unclaimedDetail.setPartname(orderItem.getPartname());
unclaimed
.
setUnclaimedStatus
(
SpareNostatus
.
EXECUTING_STATUS
);
// if (liteOrder.isOutTails()){
}
else
if
(
liteOrder
.
isClosed
()){
// unclaimed.setUnclaimedStatus(SpareNostatus.EXECUTING_STATUS);
unclaimed
.
setUnclaimedStatus
(
SpareNostatus
.
CLOSE_STATUS
);
// } else if (liteOrder.isClosed()){
}
// unclaimed.setUnclaimedStatus(SpareNostatus.CLOSE_STATUS);
unclaimedDetails
.
add
(
unclaimedDetail
);
// }
}
// unclaimedDetails.add(unclaimedDetail);
unclaimed
.
setDetailList
(
unclaimedDetails
);
// }
resultLiteOrder
.
add
(
unclaimed
);
// unclaimed.setDetailList(unclaimedDetails);
resultLiteOrder
.
add
(
OrderToUnclaimed
(
liteOrder
));
}
}
List
<
GetUnclaimedResult
>
resultList
=
LuxsanSpApi
.
getUnclaimedDetails
(
new
GetUnclaimedRequest
(
SpareNostatus
.
FORMAL_DEPT_ID
,
SpareNostatus
.
FUNCTION_DEPT
));
for
(
GetUnclaimedResult
unclaimedResult
:
resultList
)
{
for
(
GetUnclaimedResult
unclaimedResult
:
resultList
)
{
if
(
allLiteOrderDBCollect
.
contains
(
unclaimedResult
.
getOrderNo
()))
{
if
(
allLiteOrderDBCollect
.
contains
(
unclaimedResult
.
getOrderNo
()))
{
continue
;
continue
;
...
@@ -124,14 +125,17 @@ public class SpUnclaimedController {
...
@@ -124,14 +125,17 @@ public class SpUnclaimedController {
LiteOrder
liteOrder
=
new
LiteOrder
();
LiteOrder
liteOrder
=
new
LiteOrder
();
liteOrder
.
setOrderNo
(
unclaimed
.
getOrderNo
());
liteOrder
.
setOrderNo
(
unclaimed
.
getOrderNo
());
liteOrder
.
setCreateDate
(
unclaimed
.
getCreateDate
());
liteOrder
.
setCreateDate
(
unclaimed
.
getCreateDate
());
liteOrder
.
setSource
(
unclaimed
.
getFunctionDept
());
List
<
LiteOrderItem
>
liteOrderItems
=
new
ArrayList
<>();
List
<
LiteOrderItem
>
liteOrderItems
=
new
ArrayList
<>();
for
(
UnclaimedDetail
unclaimedDetail
:
unclaimed
.
getDetailList
())
{
for
(
UnclaimedDetail
unclaimedDetail
:
unclaimed
.
getDetailList
())
{
LiteOrderItem
liteOrderItem
=
new
LiteOrderItem
();
LiteOrderItem
liteOrderItem
=
new
LiteOrderItem
();
liteOrderItem
.
setLine
(
"s1"
);
liteOrderItem
.
setLine
(
"s1"
);
liteOrderItem
.
setPn
(
unclaimedDetail
.
getPartno
());
liteOrderItem
.
setPn
(
unclaimedDetail
.
getPartno
());
liteOrderItem
.
setNeedNum
(
unclaimedDetail
.
getApplyQty
());
liteOrderItem
.
setNeedNum
(
unclaimedDetail
.
getApplyQty
());
liteOrderItem
.
setPartname
(
unclaimedDetail
.
getPartname
());
liteOrderItems
.
add
(
liteOrderItem
);
liteOrderItems
.
add
(
liteOrderItem
);
}
}
log
.
info
(
"创建出库单:"
+
liteOrder
.
getOrderNo
());
liteOrder
.
setOrderItems
(
liteOrderItems
);
liteOrder
.
setOrderItems
(
liteOrderItems
);
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderManager
.
createWithItems
(
liteOrder
);
resultLiteOrder
.
add
(
unclaimed
);
resultLiteOrder
.
add
(
unclaimed
);
...
@@ -142,6 +146,31 @@ public class SpUnclaimedController {
...
@@ -142,6 +146,31 @@ public class SpUnclaimedController {
return
ResultBean
.
newOkResult
(
resultLiteOrder
);
return
ResultBean
.
newOkResult
(
resultLiteOrder
);
}
}
private
Unclaimed
OrderToUnclaimed
(
LiteOrder
liteOrder
){
Unclaimed
unclaimed
=
new
Unclaimed
();
unclaimed
.
setCreateDate
(
liteOrder
.
getCreateDate
());
unclaimed
.
setOrderNo
(
liteOrder
.
getOrderNo
());
unclaimed
.
setFunctionDept
(
liteOrder
.
getSource
());
List
<
UnclaimedDetail
>
unclaimedDetails
=
new
ArrayList
<>();
for
(
LiteOrderItem
orderItem
:
liteOrder
.
getOrderItems
())
{
UnclaimedDetail
unclaimedDetail
=
new
UnclaimedDetail
();
unclaimedDetail
.
setPartno
(
orderItem
.
getPn
());
unclaimedDetail
.
setOrderNo
(
orderItem
.
getOrderNo
());
unclaimedDetail
.
setApplyQty
(
orderItem
.
getNeedNum
());
unclaimedDetail
.
setAlrInQty
(
orderItem
.
getTotalOutNum
());
unclaimedDetail
.
setPartname
(
orderItem
.
getPartname
());
if
(
liteOrder
.
isOutTails
()){
unclaimed
.
setUnclaimedStatus
(
SpareNostatus
.
EXECUTING_STATUS
);
}
else
if
(
liteOrder
.
isClosed
()){
unclaimed
.
setUnclaimedStatus
(
SpareNostatus
.
CLOSE_STATUS
);
}
unclaimedDetails
.
add
(
unclaimedDetail
);
}
unclaimed
.
setDetailList
(
unclaimedDetails
);
return
unclaimed
;
}
@ApiOperation
(
"选中出库单"
)
@ApiOperation
(
"选中出库单"
)
@RequestMapping
(
"/checkOrderNo"
)
@RequestMapping
(
"/checkOrderNo"
)
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/service/manager/impl/SpBoxPutInManagerImpl.java
查看文件 @
96119e7
...
@@ -19,6 +19,7 @@ import com.neotel.smfcore.custom.luxsan_sp.api.LuxsanSpApi;
...
@@ -19,6 +19,7 @@ import com.neotel.smfcore.custom.luxsan_sp.api.LuxsanSpApi;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.request.SpareInHourseRequest
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.request.SpareInHourseRequest
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.result.SpareInHourseDetail
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.result.SpareInHourseDetail
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.*
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.*
;
import
com.neotel.smfcore.custom.luxsan_sp.enums.SpareNostatus
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.IReturnNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.IReturnNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpareNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpareNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpBoxPutInManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpBoxPutInManager
;
...
@@ -175,27 +176,8 @@ public class SpBoxPutInManagerImpl implements ISpBoxPutInManager {
...
@@ -175,27 +176,8 @@ public class SpBoxPutInManagerImpl implements ISpBoxPutInManager {
if
(
spareNoDetail
==
null
)
{
if
(
spareNoDetail
==
null
)
{
throw
new
Exception
(
codeBarcode
.
getPartNumber
()
+
"没有入退库需求,请检查是否存在或者不符合入退库数量"
);
throw
new
Exception
(
codeBarcode
.
getPartNumber
()
+
"没有入退库需求,请检查是否存在或者不符合入退库数量"
);
}
}
//数量加
spareNoDetail
.
setAlrInQty
(
spareNoDetail
.
getAlrInQty
()
+
codeBarcode
.
getQty
());
baseNo
.
updateDetailList
(
spareNoDetail
);
log
.
info
(
"开始判断是否完成入库单"
);
for
(
SpareNoDetail
noDetail
:
baseNo
.
getDetailList
())
{
if
(
noDetail
.
getInQty
()
>
noDetail
.
getAlrInQty
())
{
log
.
info
(
"入库未完成"
);
finish
=
false
;
break
;
}
log
.
info
(
"入料noDetail.getInQty()"
+
noDetail
.
getInQty
()
+
"noDetail.getAlrInQty()"
+
noDetail
.
getAlrInQty
());
}
}
}
// 寻找空库位
// 寻找空库位
StoragePos
pos
=
SpBoxUtil
.
locOnePos
(
boxBarcode
);
StoragePos
pos
=
SpBoxUtil
.
locOnePos
(
boxBarcode
);
...
@@ -203,6 +185,7 @@ public class SpBoxPutInManagerImpl implements ISpBoxPutInManager {
...
@@ -203,6 +185,7 @@ public class SpBoxPutInManagerImpl implements ISpBoxPutInManager {
// 开始放入料箱
// 开始放入料箱
gekouBarcode
.
setPartNumber
(
codeBarcode
.
getPartNumber
());
gekouBarcode
.
setPartNumber
(
codeBarcode
.
getPartNumber
());
gekouBarcode
.
setAmount
(
gekouBarcode
.
getAmount
()
+
codeBarcode
.
getQty
());
gekouBarcode
.
setAmount
(
gekouBarcode
.
getAmount
()
+
codeBarcode
.
getQty
());
gekouBarcode
.
updateExtraData
(
"needInNum"
,
"0"
);
boxBarcode
.
updateSubCodes
(
gekouBarcode
);
boxBarcode
.
updateSubCodes
(
gekouBarcode
);
boxBarcode
.
setStatus
(
BARCODE_STATUS
.
OUT_NORMAL
);
boxBarcode
.
setStatus
(
BARCODE_STATUS
.
OUT_NORMAL
);
...
@@ -249,33 +232,66 @@ public class SpBoxPutInManagerImpl implements ISpBoxPutInManager {
...
@@ -249,33 +232,66 @@ public class SpBoxPutInManagerImpl implements ISpBoxPutInManager {
returnNoManager
.
save
(
returnInventoryNo
);
returnNoManager
.
save
(
returnInventoryNo
);
}
}
}
}
// 最后刷新不能回滚的
if
(
isOrderPutIn
){
if
(
finish
&&
isOrderPutIn
)
{
List
<
SpareNoDetail
>
detailList
=
baseNo
.
getDetailList
();
try
{
// 调用入库接口
SpareNoDetail
spareNoDetail
=
null
;
if
(
baseNo
.
getClass
().
equals
(
SpareNo
.
class
))
{
dataLog
.
setSourceId
(
baseNo
.
getId
());
for
(
SpareNoDetail
detail
:
detailList
)
{
dataLog
.
setSourceName
(
spareNo
.
getSpareNo
());
//如果相同的话,判断数量是否大于需求数量
List
<
SpareInHourseDetail
>
details
=
new
ArrayList
<>();
if
(
detail
.
getPartno
().
equals
(
codeBarcode
.
getPartNumber
()))
{
for
(
SpareNoDetail
detail
:
baseNo
.
getDetailList
())
{
spareNoDetail
=
detail
;
SpareInHourseDetail
spareInHourseDetail
=
new
SpareInHourseDetail
();
break
;
spareInHourseDetail
.
setInQty
(
detail
.
getInQty
());
}
spareInHourseDetail
.
setPartno
(
detail
.
getPartno
());
}
String
location
=
boxStr
;
if
(
spareNoDetail
!=
null
)
{
//数量加
spareNoDetail
.
setAlrInQty
(
spareNoDetail
.
getAlrInQty
()
+
codeBarcode
.
getQty
());
baseNo
.
updateDetailList
(
spareNoDetail
);
log
.
info
(
"开始判断是否完成入库单"
);
for
(
SpareNoDetail
noDetail
:
baseNo
.
getDetailList
())
{
if
(
noDetail
.
getInQty
()
>
noDetail
.
getAlrInQty
())
{
log
.
info
(
"入库未完成"
);
finish
=
false
;
break
;
}
log
.
info
(
"入料noDetail.getInQty()"
+
noDetail
.
getInQty
()
+
"noDetail.getAlrInQty()"
+
noDetail
.
getAlrInQty
());
}
// 最后刷新不能回滚的
if
(
finish
)
{
try
{
// 调用入库接口
if
(
baseNo
.
getClass
().
equals
(
SpareNo
.
class
))
{
dataLog
.
setSourceId
(
baseNo
.
getId
());
dataLog
.
setSourceName
(
spareNo
.
getSpareNo
());
((
SpareNo
)
baseNo
).
setStatus
(
SpareNostatus
.
CLOSE_STATUS
+
""
);
((
SpareNo
)
baseNo
).
setConfirmed
(
false
);
log
.
info
(
"入库单已完成,关闭入库单"
+
baseNo
.
getNo
()
);
List
<
SpareInHourseDetail
>
details
=
new
ArrayList
<>();
for
(
SpareNoDetail
detail
:
baseNo
.
getDetailList
())
{
SpareInHourseDetail
spareInHourseDetail
=
new
SpareInHourseDetail
();
spareInHourseDetail
.
setInQty
(
detail
.
getInQty
());
spareInHourseDetail
.
setPartno
(
detail
.
getPartno
());
String
location
=
boxStr
;
// String location = SpareNostatus.LOCATION_CODE.get(baseNo.getWhCode());
// String location = SpareNostatus.LOCATION_CODE.get(baseNo.getWhCode());
spareInHourseDetail
.
setLocationCode
(
location
);
spareInHourseDetail
.
setLocationCode
(
location
);
// spareInHourseDetail.setLocationCode(binBarcode.getBarcode());
// spareInHourseDetail.setLocationCode(binBarcode.getBarcode());
details
.
add
(
spareInHourseDetail
);
details
.
add
(
spareInHourseDetail
);
}
LuxsanSpApi
.
spareInHourse
(
new
SpareInHourseRequest
(
baseNo
.
getDeptId
(),
baseNo
.
getNo
(),
baseNo
.
getWhCode
(),
details
));
spareNo
.
setConfirmed
(
true
);
log
.
info
(
"入库单通知API成功,更改状态为已确认:"
+
baseNo
.
getNo
()
);
}
}
catch
(
Exception
e
)
{
log
.
info
(
"调用入库接口失败,失败原因"
+
e
.
getMessage
());
spareNo
.
setConfirmed
(
false
);
throw
new
Exception
(
e
.
getMessage
());
}
finally
{
spareNoManager
.
save
(
spareNo
);
}
}
LuxsanSpApi
.
spareInHourse
(
new
SpareInHourseRequest
(
baseNo
.
getDeptId
(),
baseNo
.
getNo
(),
baseNo
.
getWhCode
(),
details
));
spareNo
.
setConfirmed
(
true
);
}
}
}
catch
(
Exception
e
)
{
log
.
info
(
"调用入库接口失败,失败原因"
+
e
.
getMessage
());
spareNo
.
setConfirmed
(
false
);
throw
new
Exception
(
e
.
getMessage
());
}
finally
{
spareNoManager
.
save
(
spareNo
);
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/CodeUtil.java
查看文件 @
96119e7
...
@@ -8,6 +8,10 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -8,6 +8,10 @@ import lombok.extern.slf4j.Slf4j;
public
class
CodeUtil
{
public
class
CodeUtil
{
public
static
String
getReelCodeStr
(
String
pn
,
int
qty
){
return
pn
+
"&&"
+
qty
;
}
public
static
CodeBarcode
getCodeBarcode
(
String
codeStr
){
public
static
CodeBarcode
getCodeBarcode
(
String
codeStr
){
if
(!(
codeStr
.
contains
(
" "
)
||
codeStr
.
contains
(
"&&"
))){
if
(!(
codeStr
.
contains
(
" "
)
||
codeStr
.
contains
(
"&&"
))){
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/OrderNoCache.java
查看文件 @
96119e7
...
@@ -83,6 +83,7 @@ public class OrderNoCache {
...
@@ -83,6 +83,7 @@ public class OrderNoCache {
UnclaimedDetail
unclaimedDetail
=
new
UnclaimedDetail
();
UnclaimedDetail
unclaimedDetail
=
new
UnclaimedDetail
();
unclaimedDetail
.
setApplyQty
(
detail
.
getApplyQty
());
unclaimedDetail
.
setApplyQty
(
detail
.
getApplyQty
());
unclaimedDetail
.
setAlrInQty
(
0
);
unclaimedDetail
.
setAlrInQty
(
0
);
unclaimedDetail
.
setPartname
(
detail
.
getPartname
());
BeanUtils
.
copyProperties
(
detail
,
unclaimedDetail
);
BeanUtils
.
copyProperties
(
detail
,
unclaimedDetail
);
detailList
.
add
(
unclaimedDetail
);
detailList
.
add
(
unclaimedDetail
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/SpBoxUtil.java
查看文件 @
96119e7
...
@@ -106,15 +106,6 @@ public class SpBoxUtil {
...
@@ -106,15 +106,6 @@ public class SpBoxUtil {
return
detail
;
return
detail
;
}
}
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
// Unclaimed orderNo = orderNoCache.getExecutingOrderNo();
// spareNoDetails = orderNo.getDetailList().stream().map(unclaimedDetail -> {
// SpareNoDetail detail = new SpareNoDetail();
// detail.setAlrInQty(unclaimedDetail.getAlrInQty());
// detail.setInQty(unclaimedDetail.getApplyQty());
// detail.setPartno(unclaimedDetail.getPartno());
// detail.setPartname(unclaimedDetail.getPartname());
// return detail;
// }).collect(Collectors.toList());
}
}
return
spareNoDetails
;
return
spareNoDetails
;
}
}
...
@@ -146,6 +137,7 @@ public class SpBoxUtil {
...
@@ -146,6 +137,7 @@ public class SpBoxUtil {
activeDetail
=
spareNoDetails
.
get
(
0
);
activeDetail
=
spareNoDetails
.
get
(
0
);
}
}
}
}
//待领取
if
(
ObjectUtil
.
isNull
(
activeDetail
))
{
if
(
ObjectUtil
.
isNull
(
activeDetail
))
{
par
.
add
(
0
);
par
.
add
(
0
);
}
else
{
}
else
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论