Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit eec0d5ef
由
zshaohui
编写于
2024-07-24 20:20:47 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
预约单出库
1 个父辈
13bd28d9
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
166 行增加
和
41 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpAgvDeviceClientController.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpUnclaimedController.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
eec0d5e
...
@@ -850,7 +850,7 @@ public class LiteOrderCache {
...
@@ -850,7 +850,7 @@ public class LiteOrderCache {
Collection
<
LiteOrder
>
liteOrders
=
getAllLiteOrder
();
Collection
<
LiteOrder
>
liteOrders
=
getAllLiteOrder
();
if
(
liteOrders
!=
null
&&
!
liteOrders
.
isEmpty
())
{
if
(
liteOrders
!=
null
&&
!
liteOrders
.
isEmpty
())
{
for
(
LiteOrder
liteOrder
:
liteOrders
)
{
for
(
LiteOrder
liteOrder
:
liteOrders
)
{
if
(
!
liteOrder
.
isTaskFinished
()
&&
!
liteOrder
.
isNew
()
&&
!
liteOrder
.
isClosed
())
{
if
(
liteOrder
.
isOutTails
())
{
return
liteOrder
.
getOrderNo
();
return
liteOrder
.
getOrderNo
();
}
}
}
}
...
@@ -1358,4 +1358,98 @@ public class LiteOrderCache {
...
@@ -1358,4 +1358,98 @@ public class LiteOrderCache {
public
synchronized
void
rawTicketOut
(
String
orderNo
)
{
public
synchronized
void
rawTicketOut
(
String
orderNo
)
{
}
}
public
synchronized
String
checkOutUnclaimed
(
LiteOrder
liteOrder
)
{
String
orderNo
=
liteOrder
.
getOrderNo
();
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
)
{
cacheOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
}
if
(
cacheOrder
==
null
)
{
log
.
info
(
"未找到工单:"
+
orderNo
+
"的信息"
);
return
"预约单不存在"
;
}
if
(
cacheOrder
.
isClosed
())
{
log
.
info
(
"工单:"
+
orderNo
+
"已经关闭"
);
return
"预约单已关闭"
;
}
if
(
cacheOrder
.
isOutTails
())
{
log
.
info
(
"工单:"
+
orderNo
+
"正在执行中"
);
return
"预约单正在执行中"
;
}
log
.
info
(
"开始执行预约单"
);
cacheOrder
.
setStatus
(
LITEORDER_STATUS
.
TAILS
);
int
boxCheckOutNum
=
0
;
for
(
LiteOrderItem
item
:
liteOrder
.
getOrderItems
())
{
String
pn
=
item
.
getPn
();
int
needNum
=
item
.
getNeedNum
();
int
totalOutNum
=
item
.
getTotalOutNum
();
int
assignNum
=
0
;
int
needOutNum
=
totalOutNum
-
needNum
;
while
(
assignNum
<
needOutNum
)
{
List
<
String
>
storageIdList
=
new
ArrayList
<>();
for
(
Storage
storage
:
dataCache
.
getAllStorage
().
values
())
{
storageIdList
.
add
(
storage
.
getId
());
}
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
CHECKOUT_TYPE
checkOutType
=
dataCache
.
getCheckOutType
();
//获取可用库位
StoragePos
pos
=
storagePosManager
.
findPartNumberInStorages
(
storageIdList
,
pn
,
excludePosIds
,
checkOutType
,
""
);
if
(
pos
==
null
)
{
log
.
info
(
item
.
getPn
()
+
"未找到可用库位,跳过"
);
continue
;
}
//进行标记
boolean
hasSmpPn
=
false
;
Barcode
barcode
=
pos
.
getBarcode
();
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
for
(
Barcode
subCode
:
subCodeList
)
{
if
(
pn
.
equals
(
subCode
.
getPartNumber
())){
subCode
.
setOut
(
true
);
subCode
.
setOrderItemId
(
item
.
getId
());
subCode
.
setOrderId
(
cacheOrder
.
getId
());
barcodeManager
.
save
(
subCode
);
barcode
.
updateSubCodes
(
subCode
);
barcodeManager
.
save
(
barcode
);
assignNum
=
assignNum
+
subCode
.
getAmount
();
hasSmpPn
=
true
;
break
;
}
}
if
(
hasSmpPn
){
boxCheckOutNum
=
boxCheckOutNum
+
1
;
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getId
());
DataLog
dataLog
=
new
DataLog
(
storage
,
barcode
,
pos
);
dataLog
.
setSourceId
(
cacheOrder
.
getId
());
dataLog
.
setSourceName
(
cacheOrder
.
getOrderNo
());
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
taskService
.
updateQueueTask
(
dataLog
);
}
}
}
if
(
boxCheckOutNum
<=
0
){
finishedOrderTasks
(
liteOrder
);
return
orderNo
+
"未找到可以执行的任务"
;
}
liteOrderMap
.
put
(
orderNo
,
cacheOrder
);
liteOrderManager
.
save
(
cacheOrder
);
return
""
;
}
}
}
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpAgvDeviceClientController.java
查看文件 @
eec0d5e
...
@@ -429,7 +429,7 @@ public class SpAgvDeviceClientController {
...
@@ -429,7 +429,7 @@ public class SpAgvDeviceClientController {
/**
/**
* 仓位状态
* 仓位状态
*/
*/
//
storagePos.setBarcode(barcode);
storagePos
.
setBarcode
(
barcode
);
storagePos
.
setUsed
(
true
);
storagePos
.
setUsed
(
true
);
storagePos
.
setCanCheckOutTime
(
System
.
currentTimeMillis
());
storagePos
.
setCanCheckOutTime
(
System
.
currentTimeMillis
());
storagePosManager
.
save
(
storagePos
);
storagePosManager
.
save
(
storagePos
);
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpUnclaimedController.java
查看文件 @
eec0d5e
...
@@ -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.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.inList.service.manager.IInListManager
;
import
com.neotel.smfcore.core.inList.service.manager.IInListManager
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.enums.LITEORDER_STATUS
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
...
@@ -57,6 +59,9 @@ public class SpUnclaimedController {
...
@@ -57,6 +59,9 @@ public class SpUnclaimedController {
@Autowired
@Autowired
private
TaskService
taskService
;
private
TaskService
taskService
;
@Autowired
private
LiteOrderCache
liteOrderCache
;
@ApiOperation
(
"获取正在执行出库单"
)
@ApiOperation
(
"获取正在执行出库单"
)
@RequestMapping
(
"/getActiveOrderNo"
)
@RequestMapping
(
"/getActiveOrderNo"
)
@AnonymousAccess
@AnonymousAccess
...
@@ -71,35 +76,41 @@ public class SpUnclaimedController {
...
@@ -71,35 +76,41 @@ public class SpUnclaimedController {
@AnonymousAccess
@AnonymousAccess
public
ResultBean
getAllUnclaimed
(
String
no
)
{
public
ResultBean
getAllUnclaimed
(
String
no
)
{
List
<
GetUnclaimedResult
>
resultList
=
LuxsanSpApi
.
getUnclaimedDetails
(
new
GetUnclaimedRequest
(
SpareNostatus
.
DEPT_ID
,
SpareNostatus
.
FUNCTION_DEPT
));
List
<
GetUnclaimedResult
>
resultList
=
LuxsanSpApi
.
getUnclaimedDetails
(
new
GetUnclaimedRequest
(
SpareNostatus
.
DEPT_ID
,
SpareNostatus
.
FUNCTION_DEPT
));
List
<
Unclaimed
>
unclaimedList
=
new
ArrayList
<>();
List
<
Unclaimed
>
unclaimedList
=
new
ArrayList
<>();
for
(
GetUnclaimedResult
result
:
resultList
)
{
for
(
GetUnclaimedResult
result
:
resultList
)
{
Unclaimed
unclaimed
=
orderNoCache
.
getByOrderNo
(
result
.
getOrderNo
());
String
orderNo
=
result
.
getOrderNo
();
if
(
unclaimed
==
null
)
{
LiteOrder
liteOrder
=
liteOrderCache
.
getLiteOrder
(
orderNo
);
unclaimed
=
orderNoCache
.
getOrderNoResultToUnclaimed
(
result
);
if
(
liteOrder
==
null
)
{
orderNoCache
.
addToMap
(
unclaimed
);
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
unclaimedManager
.
save
(
unclaimed
);
}
}
unclaimedList
.
add
(
unclaimed
);
if
(
liteOrder
==
null
)
{
String
orderNo
=
unclaimed
.
getOrderNo
();
liteOrder
=
new
LiteOrder
();
// if (ObjectUtil.isNotNull(liteOrderManager.findByOrderNo(orderNo))) {
liteOrder
.
setOrderNo
(
orderNo
);
// continue;
// }
List
<
LiteOrderItem
>
itemList
=
new
ArrayList
<>();
/* List<LiteOrderItem> liteOrderItems = new ArrayList<>();
for
(
UnclaimedDetail
detail
:
result
.
getSpareApplyDetail
())
{
for (UnclaimedDetail unclaimedDetail : unclaimed.getDetailList()) {
LiteOrderItem
item
=
new
LiteOrderItem
();
LiteOrderItem liteOrderItem = new LiteOrderItem();
item
.
setPn
(
detail
.
getPartno
());
liteOrderItem.setPn(unclaimedDetail.getPartno());
item
.
setNeedNum
(
detail
.
getApplyQty
());
// 需求数量
itemList
.
add
(
item
);
liteOrderItem.setNeedReelCount(unclaimedDetail.getApplyQty());
}
liteOrderItem.setNeedNum(unclaimedDetail.getApplyQty());
liteOrderItem.setLine("s1");
liteOrder
.
setOrderItems
(
itemList
);
liteOrderItems.add(liteOrderItem);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
}
}
LiteOrder liteOrder = new LiteOrder(orderNo, liteOrderItems);
Unclaimed
unclaimed
=
orderNoCache
.
getOrderNoResultToUnclaimed
(
result
);
liteOrder.setLine("s1");
if
(
liteOrder
.
isOutTails
()){
liteOrderManager.createWithItems(liteOrder);*/
unclaimed
.
setUnclaimedStatus
(
SpareNostatus
.
EXECUTING_STATUS
);
}
else
if
(
liteOrder
.
isClosed
()){
unclaimed
.
setUnclaimedStatus
(
SpareNostatus
.
CLOSE_STATUS
);
}
unclaimedList
.
add
(
unclaimed
);
}
}
if
(
StringUtils
.
isNot
Blank
(
no
))
{
if
(
StringUtils
.
isNot
Empty
(
no
))
{
unclaimedList
=
unclaimedList
.
stream
().
filter
(
spareNo
->
spareNo
.
getOrderNo
().
equals
(
no
)).
collect
(
Collectors
.
toList
());
unclaimedList
=
unclaimedList
.
stream
().
filter
(
spareNo
->
spareNo
.
getOrderNo
().
equals
(
no
)).
collect
(
Collectors
.
toList
());
}
}
return
ResultBean
.
newOkResult
(
unclaimedList
);
return
ResultBean
.
newOkResult
(
unclaimedList
);
...
@@ -111,19 +122,31 @@ public class SpUnclaimedController {
...
@@ -111,19 +122,31 @@ public class SpUnclaimedController {
@AnonymousAccess
@AnonymousAccess
public
ResultBean
checkOrderNo
(
String
orderNoStr
)
{
public
ResultBean
checkOrderNo
(
String
orderNoStr
)
{
//判断有没有正在执行的任务单
//判断有没有正在执行的任务单
String
no
=
orderNoCache
.
getExecutingOrderNoSt
r
();
String
no
=
liteOrderCache
.
hasExecutingOrde
r
();
if
(
StringUtils
.
isNotEmpty
(
no
))
{
if
(
StringUtils
.
isNotEmpty
(
no
))
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"有正在执行的出库单:"
+
no
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"有正在执行的出库单:"
+
no
);
}
}
Unclaimed
unclaimed
=
orderNoCache
.
getByOrderNo
(
orderNoStr
);
//判断工单有没有关闭
if
(
unclaimed
==
null
)
{
LiteOrder
liteOrder
=
liteOrderCache
.
getLiteOrder
(
orderNoStr
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"未找到对应的出库单信息"
);
if
(
liteOrder
==
null
){
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNoStr
);
}
if
(
liteOrder
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
orderNoStr
+
"预约单不存在"
);
}
if
(
liteOrder
.
isOutTails
()){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
orderNoStr
+
"预约单正在执行中"
);
}
if
(
liteOrder
.
isClosed
()){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
orderNoStr
+
"预约单已经关闭"
);
}
String
result
=
liteOrderCache
.
checkOutUnclaimed
(
liteOrder
);
if
(
StringUtils
.
isNotEmpty
(
result
)){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
orderNoStr
+
"执行报错:"
+
result
);
}
}
unclaimed
.
setUnclaimedStatus
(
SpareNostatus
.
EXECUTING_STATUS
);
orderNoCache
.
addToMap
(
unclaimed
);
unclaimedManager
.
save
(
unclaimed
);
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
@@ -133,18 +156,26 @@ public class SpUnclaimedController {
...
@@ -133,18 +156,26 @@ public class SpUnclaimedController {
@AnonymousAccess
@AnonymousAccess
public
ResultBean
abandonOrderNo
(
String
orderNoStr
)
{
public
ResultBean
abandonOrderNo
(
String
orderNoStr
)
{
Unclaimed
unclaimed
=
orderNoCache
.
getByOrderNo
(
orderNoStr
);
//判断工单有没有关闭
if
(
unclaimed
==
null
)
{
LiteOrder
liteOrder
=
liteOrderCache
.
getLiteOrder
(
orderNoStr
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"未找到对应的出库单信息"
);
if
(
liteOrder
==
null
){
liteOrder
=
liteOrderManager
.
findByOrderNo
(
orderNoStr
);
}
}
if
(
liteOrder
==
null
){
if
(!
unclaimed
.
isExecuting
())
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
orderNoStr
+
"预约单不存在"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
orderNoStr
+
"不是正在执行中,不允许放弃"
);
}
if
(
liteOrder
.
isOutTails
()){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
orderNoStr
+
"预约单正在执行中"
);
}
}
if
(
liteOrder
.
isClosed
()){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
orderNoStr
+
"预约单已经关闭"
);
}
liteOrder
.
setStatus
(
LITEORDER_STATUS
.
CLOSED
);
liteOrder
.
setClosed
(
true
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
liteOrderManager
.
save
(
liteOrder
);
unclaimed
.
setUnclaimedStatus
(
SpareNostatus
.
ABANDON_STATUS
);
orderNoCache
.
addToMap
(
unclaimed
);
unclaimedManager
.
save
(
unclaimed
);
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论